2009-09-17 7 views
21

so come ottenere in SQL (SQL Server) la data corrente, ma con l'inizio della giornata:sql - inizio ore al giorno, mese, ecc

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

ho bisogno di ottenere (in SQL) la data corrente con l'inizio di questa ora. Per esempio: 2009-09-17 17:00:00 (non mi interessa circa il formato esatto)

e ho bisogno per ottenere la data corrente, ma con l'inizio di questo mese: Per esempio : 2009-09-01 00: 00: 00.000 (Non mi interessa il formato esatto)

Potete aiutarmi? Grazie in anticipo

risposta

40

Basta adattare il vostro attuale inizio del codice di giornata!

Tutto ciò che si desidera è l'inizio del mese, l'inizio dell'ora. Il suo solo lo stesso ...

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

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

GRAZIE !!! Mi hai aiutato molto. –

2

Prova questa

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

primo: grazie. secondo: si inserisce esplicitamente l'ora (17 nella prima query, 01 nella seconda query). Non voglio mettere questi numeri ho bisogno dell'ora corrente. il mese corrente. –

+0

Cambia il 17 in DATEPART (hh, GETDATE()) che ti dà l'ora corrente e 01 è per l'inizio del mese, ho frainteso? –

+0

tu sei l'uomo –

1

Oppure si può provare questo

del giorno: select CONVERT(datetime, convert(varchar(8), getdate(), 112))

per mese: select CONVERT(datetime, convert(varchar(6), getdate(), 112)+ '01')

Per l'anno: select CONVERT(datetime, convert(varchar(4), getdate(), 112)+ '0101')

4

Prova questa:

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

just 'CAST (SYSDATETIME() AS DATE)' funziona per me – kaybee99

0

Il più corto è: CAST(CURRENT_TIMESTAMP AS DATE)

Problemi correlati