Cuando selecciono la fecha en SQL, se devuelve como 2011-02-25 21:17:33.933
. Pero solo necesito la parte Fecha, es decir 2011-02-25
. ¿Cómo puedo hacer esto?
Cuando selecciono la fecha en SQL, se devuelve como 2011-02-25 21:17:33.933
. Pero solo necesito la parte Fecha, es decir 2011-02-25
. ¿Cómo puedo hacer esto?
Respuestas:
Supongo que quiere una cuerda.
select convert(varchar(10), '2011-02-25 21:17:33.933', 120)
120 dice aquí la función de conversión que se pasa la fecha de entrada en el siguiente formato : yyyy-mm-dd hh:mi:ss
.
Para SQL Server 2008:
Convert(date, getdate())
Consulte https://docs.microsoft.com/en-us/sql/t-sql/functions/getdate-transact-sql
DATE
es nuevo en 2008.
date
tipo de datos, por lo que esta solución no es válida.
El más rápido es datediff
, p. Ej.
select dateadd(d, datediff(d,0, [datecolumn]), 0), other..
from tbl
Pero si solo necesita usar el valor, puede omitir el dateadd, por ejemplo
select ...
WHERE somedate <= datediff(d, 0, getdate())
donde la expresión datediff(d, 0, getdate())
es suficiente para devolver la fecha de hoy sin porción de tiempo.
Use CAST (GETDATE () como fecha) que funcionó para mí, simple.
CAST(order_date AS DATE)
CAST(
FLOOR(
CAST( GETDATE() AS FLOAT )
)
AS DATETIME
)
http://www.bennadel.com/blog/122-Getting-Only-the-Date-Part-of-a-Date-Time-Stamp-in-SQL-Server.htm
Para la versión anterior de 2008 :
SELECT DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0)
Es un poco tarde, pero use la función ODBC "curdate" (el ángulo de paréntesis 'fn' es la secuencia de escape de la función ODBC).
SELECT {fn curdate()}
Salida: 2013-02-01
SELECT {fn curdate()} FROM (SELECT 1) AS T(X)
y observa el plan de ejecución real (versión xml), verá que lo que realmente se ejecuta es CONVERT(varchar(10),getdate(),23)
. Entonces, el tipo de datos de esta función ODBC es lo varchar(10)
que significa que si desea comparar el resultado con un datetime
obtendrá una conversión implícita de varchar(10)
a datetime
en una cadena yyyy-mm-dd
. Esa conversión implícita fallará con set dateformat dmy
.
Puedes probar este también.
SELECT CONVERT(DATE, GETDATE(), 120)
En caso de que necesite tiempo para ser ceros como 2018-01-17 00:00:00.000
:
SELECT CONVERT(DATETIME, CONVERT(DATE, GETDATE()), 121)
El uso es simple:
convert(date, Btch_Time)
Ejemplo a continuación:
Mesa:
Efft_d Loan_I Loan_Purp_Type_C Orig_LTV Curr_LTV Schd_LTV Un_drwn_Bal_a Btch_Time Strm_I Btch_Ins_I
2014-05-31 200312500 HL03 NULL 1.0000 1.0000 1.0000 2014-06-17 11:10:57.330 1005 24851e0a-53983699-14b4-69109
Select * from helios.dbo.CBA_SRD_Loan where Loan_I in ('200312500') and convert(date, Btch_Time) = '2014-06-17'
Es demasiado tarde pero seguir me funcionó bien
declare @vCurrentDate date=getutcdate()
select @vCurrentDate
Cuando el tipo de datos es fecha, las horas se truncarían
En PLSQL puedes usar
to_char(SYSDATE,'dd/mm/yyyy')
Primero ROUND
convierta la fecha a flotante (que muestra el numérico), luego el numérico a 0 puntos decimales, luego conviértalo a datetime.
convert(datetime,round(convert(float,orderdate,101),0) ,101)
Prueba esto.
SELECT DATEADD(DD, 0, DATEDIFF(DD, 0, GETDATE()))