2013-07-03 16 views
19

Sto provando a aggiungere tempo personalizzato a data/ora in SQL Server 2008 R2.Come aggiungere l'ora a DateTime in SQL

In seguito è quello che ho provato.

SELECT DATEADD(hh, 03, DATEADD(mi, 30, DATEADD(ss, 00, DATEDIFF(dd, 0,GETDATE())))) as Customtime 

Utilizzando la query sopra, sono in grado di raggiungerlo.

Ma esiste un metodo abbreviato già disponibile per aggiungere l'ora personalizzata a data/ora?

Grazie in anticipo.

risposta

32

Prova questa

SELECT DATEADD(day, DATEDIFF(day, 0, GETDATE()), '03:30:00') 
+5

Difficilmente la risposta giusta. @date + cast (@time come datetime), dove data è di tipo datetime e ora di tipo time – MoonStom

+3

@MoonStom Il tuo commento è sbagliato, perché OP vuole aggiungere 'tempo personalizzato', non solo il tempo. Vedi lì http://sqlfiddle.com/#!3/9eecb7db59d16c80417c72d1/3891 –

12

Prova questo:

SELECT DATEDIFF(dd, 0,GETDATE()) + CONVERT(DATETIME,'03:30:00.000') 
+0

Grazie. C'è qualche ragione per usare 'CONVERT()'? – Praveen

+0

La query non verrà eseguita senza usare 'CONVERT()' –

+0

Oh, sentirsi male di quella domanda. Grazie ancora. – Praveen

5

Oppure provate un metodo alternativo utilizzando Tempo tipo di dati:

DECLARE @MyTime TIME = '03:30:00', @MyDay DATETIME = CAST(GETDATE() AS DATE) 

SELECT @[email protected] 
+1

+1 per una buona soluzione;) –

+4

Errore: 'I tipi di dati datetime e time non sono compatibili con l'operatore add.' – Keith

+0

La conversione implicita tra TIME e DATETIME è possibile ma può essere aggiunta l'una all'altra. Non chiedere Utilizza DATETIME per entrambi gli operatori: 'DECLARE @MyTime DATETIME = '03: 30: 00 ', @MyDay DATETIME = CAST (GETDATE() AS DATE) SELECT @ MyDay + @ MyTime' – HuRN

3

Prova questa

SELECT DATEADD(MINUTE,HOW_MANY_MINUTES,TO_WHICH_TIME) 

Qui MINUTE è costante che indica che stanno andando ad aggiungere/sottrarre minuti dall'indicatore TO_WHICH_TIME. HOW_MANY_MINUTES è l'intervallo in base al quale è necessario aggiungere minuti, se è specificato negativo, il tempo verrà sottratto, altrimenti verrà aggiunto allo specificatore TO_WHICH_TIME e TO_WHICH_TIME è l'ora originale a cui si aggiunge MINUTE.

Spero che questo aiuti.

-2

di inizio Day Time: SELECT DATEADD (giorno, DATEDIFF (giorno, 0, GETDATE()), '00: 00: 00') Fine Day Time: SELECT DATEADD (giorno, DATEDIFF (giorno, 0, GETDATE ()), '23: 59: 59')

14

Per me, questo codice è più esplicito:

CAST(@SomeDate AS datetime) + CAST(@SomeTime AS datetime) 
0

Quello che segue è semplice e funziona su SQL Server 2008 (SP3) e fino:

PRINT @@VERSION 
PRINT GETDATE() 
PRINT GETDATE() + '01:00:00' 
PRINT CONVERT(datetime,FLOOR(CONVERT(float,GETDATE()))) + '01:00:00' 

Con uscita:

Microsoft SQL Server 2008 (SP3) - 10.0.5500.0 (X64) 
Mar 15 2017 6:17PM 
Mar 15 2017 7:17PM 
Mar 15 2017 1:00AM 
Problemi correlati