2009-09-17 17 views
21

que sabe cómo conseguir en SQL (SQL Server) la fecha actual, pero con el inicio de la jornada:sql - inicio de la hora, mes, etc.

select dateadd(DAY, datediff(day, 0, getdate()),0) 
(result:2009-09-17 00:00:00.000) 

necesito para obtener (en SQL) la fecha actual con el comienzo de esta hora. Por ejemplo: 2009-09-17 17:00:00 (no me importa sobre el formato exacto)

y necesito para obtener la fecha actual, pero con el inicio de este mes: Por ejemplo : 2009-09-01 00: 00: 00.000 (no me importa el formato exacto)

¿Me puede ayudar? Gracias de antemano

Respuesta

40

Sólo adaptar su inicio actual del código días!

Todo lo que desea es inicio de mes, inicio de la hora. Su justo el mismo ...

select dateadd(month, datediff(month, 0, getdate()),0) 

select dateadd(hour, datediff(hour, 0, getdate()),0) 
+0

GRACIAS! me ayudaste mucho. –

2

Prueba este

select DATEADD(hh,17,dateadd(DAY, datediff(day, 0, getdate()),0)) 

SELECT CAST('01 ' + CAST(DATENAME(MM, getdate()) AS VARCHAR(15)) + CAST(DATEPART(yyyy, GETDATE()) AS VARCHAR(5)) AS DATETIME) 
+0

primero: gracias. segundo: explícitamente pones el tiempo ahora (17 en tu primera consulta, 01 en tu segunda consulta). No quiero poner estos números. Necesito la hora actual. el mes actual. –

+0

Cambie el 17 a DATEPART (hh, GETDATE()) que le da la hora actual y el 01 es para el comienzo del mes, ¿lo entendí mal? –

+0

usted es el hombre –

1

O puede probar esta

por día: select CONVERT(datetime, convert(varchar(8), getdate(), 112))

Por mes: select CONVERT(datetime, convert(varchar(6), getdate(), 112)+ '01')

del año: select CONVERT(datetime, convert(varchar(4), getdate(), 112)+ '0101')

4

intente esto:

CAST(CAST(SYSDATETIME() AS DATE) AS DATETIME) 
+1

simplemente 'CAST (SYSDATETIME() AS DATE)' funciona para mí – kaybee99

0

El más corto es: CAST(CURRENT_TIMESTAMP AS DATE)

Cuestiones relacionadas