week una obtener name month mes hora fecha español day datepart datename año sql-server datetime

sql-server - una - obtener hora sql server



Obtenga solo la parte Fecha de DateTime en mssql (5)

Posible duplicado:
Obtenga solo la fecha de la agrupación en seleccionar de la columna DateTime en SQL Server

¿Cómo puedo obtener solo la parte de fecha de un DateTime? Estoy buscando algo así como la función year () pero para toda la fecha.


Esto puede no ser tan ingenioso como un trazador de líneas, pero lo uso para realizar la manipulación de fechas principalmente para los informes:

DECLARE @Date datetime SET @Date = GETDATE() -- Set all time components to zero SET @Date = DATEADD(ms, -DATEPART(ms, @Date), @Date) -- milliseconds = 0 SET @Date = DATEADD(ss, -DATEPART(ss, @Date), @Date) -- seconds = 0 SET @Date = DATEADD(mi, -DATEPART(mi, @Date), @Date) -- minutes = 0 SET @Date = DATEADD(hh, -DATEPART(hh, @Date), @Date) -- hours = 0 -- Extra manipulation for month and year SET @Date = DATEADD(dd, -DATEPART(dd, @Date) + 1, @Date) -- day = 1 SET @Date = DATEADD(mm, -DATEPART(mm, @Date) + 1, @Date) -- month = 1

Utilizo esto para obtener fechas por hora, diarias, mensuales y anuales usadas para informes y indicadores de rendimiento, etc.


Podemos usar este método:

CONVERT(VARCHAR(10), GETDATE(), 120)

El último parámetro cambia el formato solo para obtener la hora o la fecha en formatos específicos.


Otra forma ingeniosa es:

DATEADD(dd, 0, DATEDIFF(dd, 0, [YourDate]))

Que obtiene el número de días desde el DÍA 0 hasta SuFecha y lo agrega al DÍA 0 para establecer nuevamente la línea base. Este método (o "derivados" del mismo) se puede usar para muchos otros tipos de manipulación de fechas.

Editar - otros cálculos de fecha:

Primer día del mes:

DATEADD(mm, DATEDIFF(mm, 0, getdate()), 0)

Primer día del año:

DATEADD(yy, DATEDIFF(yy, 0, getdate()), 0)

Primer día del trimestre:

DATEADD(qq, DATEDIFF(qq, 0, getdate()), 0)

Último día del mes anterior:

DATEADD(ms, -3, DATEADD(mm, DATEDIFF(mm, 0, getdate()), 0))

Último día del mes actual:

DATEADD(ms, -3, DATEADD(mm, DATEDIFF(m, 0, getdate()) + 1, 0))

Último día del año actual:

DATEADD(ms, -3, DATEADD(yy, DATEDIFF(yy, 0, getdate()) + 1, 0))

Primer lunes del mes:

DATEADD(wk, DATEDIFF(wk, 0, DATEADD(dd, 6 - DATEPART(day, getdate()), getdate())), 0)

Editar: Cierto, Joe, no lo agrega al DÍA 0, agrega 0 (días) a la cantidad de días que básicamente lo convierte nuevamente a una fecha y hora.


Esto también puede ayudar:

SELECT convert(varchar, getdate(), 100) -- mon dd yyyy hh:mmAM (or PM) -- Oct 2 2008 11:01AM SELECT convert(varchar, getdate(), 101) -- mm/dd/yyyy - 10/02/2008 SELECT convert(varchar, getdate(), 102) -- yyyy.mm.dd – 2008.10.02 SELECT convert(varchar, getdate(), 103) -- dd/mm/yyyy SELECT convert(varchar, getdate(), 104) -- dd.mm.yyyy SELECT convert(varchar, getdate(), 105) -- dd-mm-yyyy SELECT convert(varchar, getdate(), 106) -- dd mon yyyy SELECT convert(varchar, getdate(), 107) -- mon dd, yyyy SELECT convert(varchar, getdate(), 108) -- hh:mm:ss SELECT convert(varchar, getdate(), 109) -- mon dd yyyy hh:mm:ss:mmmAM (or PM) -- Oct 2 2008 11:02:44:013AM SELECT convert(varchar, getdate(), 110) -- mm-dd-yyyy SELECT convert(varchar, getdate(), 111) -- yyyy/mm/dd SELECT convert(varchar, getdate(), 112) -- yyyymmdd SELECT convert(varchar, getdate(), 113) -- dd mon yyyy hh:mm:ss:mmm -- 02 Oct 2008 11:02:07:577 SELECT convert(varchar, getdate(), 114) -- hh:mm:ss:mmm(24h) SELECT convert(varchar, getdate(), 120) -- yyyy-mm-dd hh:mm:ss(24h) SELECT convert(varchar, getdate(), 121) -- yyyy-mm-dd hh:mm:ss.mmm SELECT convert(varchar, getdate(), 126) -- yyyy-mm-ddThh:mm:ss.mmm -- 2008-10-02T10:52:47.513 -- SQL create different date styles with t-sql string functions SELECT replace(convert(varchar, getdate(), 111), ''/'', '' '') -- yyyy mm dd SELECT convert(varchar(7), getdate(), 126) -- yyyy-mm SELECT right(convert(varchar, getdate(), 106), 8) -- mon yyyy

La fuente


La solución que desea es la que se propone aquí:

https://.com/a/542802/50776

Básicamente, haces esto:

cast(floor(cast(@dateVariable as float)) as datetime)

Hay una definición de función en el enlace que le permitirá consolidar la funcionalidad y llamarla a cualquier lugar (en lugar de tener que recordarla) si lo desea.