separar - obtener mes y año de una fecha sql
T-SQL para recortar una fecha y hora a la fecha más cercana? (7)
Duplicado de ¿Cuál es la MEJOR manera de eliminar la porción de tiempo de un valor de fecha y hora (SQL Server)?
Tengo una columna que rastrea cuando las cosas se crean utilizando una fecha y hora, pero me gustaría generar un informe que las agrupe por día, por lo que necesito una forma de anular el componente de tiempo de una columna de fecha y hora.
¿Cómo hago esto?
En mis búsquedas me encontré con la siguiente solución, solo elimina el tiempo UTC, pero me pareció interesante, así que pensé que alguien más también lo haría:
FUNCTION TrimDate(@dt AS DATETIME) RETURNS DATETIME
BEGIN
RETURN CAST(CAST((@dt - 0.500000038580247) AS INT) AS DATETIME)
END
Supongo que funciona rápido, ya que todo lo que hace es redondear y lanzar.
convertir (varchar, el campo de fecha / valor / etc, 101)
Esta es la forma más sencilla de obtener la fecha de una fecha y hora.
declare @CurrentDate datetime
set @CurrentDate = dateadd(dd, datediff(dd, 0, getdate()), 0)
--o--
select dateadd(dd, datediff(dd, 0, MyDateColumn), 0) as DateOnly
from tblX
Aquí hay otra solución:
SELECT CAST( FLOOR( CAST( GETDATE() AS float) ) AS smalldatetime)
Sí. Hay muchos formatos para elegir, así que lo vincularé en su lugar.
http://library.cirr.com/Microsoft/SQL-Server-v7/html/ca-co_1.htm
Si desea poner a cero el tiempo como implica su publicación, puede intentar esto:
select cast(convert(varchar, getdate(), 101) as datetime)
Una forma es cambiar getdate()
a su nombre de columna,
select dateadd(dd, datediff(dd, 0, getdate())+0, 0)
Por qué no convertir directamente a la fecha:
select convert(date, getdate())
Esto trunca días, no rondas. Para redondear Días haz esto:
select convert(date, getdate() + 0.5)