2010-05-17 5 views
8

Ich muss die datetime-Variable auf zwei Tage setzen, aber es muss ein Teil der Zeit 18:00 sein.Setze den Zeitteil der Datetime-Variable auf 18:00

Zum Beispiel, wenn ich getdate() jetzt rufe, werde ich 2010-05-17 13:18:07.260 bekommen. Ich muss es auf 2010-05-19 18:00:00.000 setzen.

Hat jemand einen guten Ausschnitt dafür oder irgendwelche Ideen, wie man es richtig macht?

Antwort

15
SELECT DATEADD(hh, 24 * 2 + 18, DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0)) 

Dies kürzt das aktuelle Datum und fügt 2 Tage und 18 Stunden (24 * 2 + 18) hinzu.

Eine mögliche Variante:

SELECT DATEADD(hh, 18, DATEADD(dd, DATEDIFF(dd, -2, GETDATE()), 0)) 
+0

Super, vielen Dank. Funktioniert perfekt. –

1
Select DateAdd(hour, 18, DateAdd(day, 2, cast(floor(cast(getdate() as float))as datetime))) 
1

Ich hatte etwas ähnliches zu tun, eine Prozedur erstellen, die von einer bestimmten Zeit am Vortag zu einem bestimmten Zeitpunkt am aktuellen Tag Diese laufen soll, was ich Um das Startdatum auf 16:30 am Vortag festzulegen, subtrahieren Sie die Teile, die Sie nicht zurückbekommen möchten, grundsätzlich auf 0 und fügen Sie dann den Wert hinzu, den Sie möchten.

-- Set Start Date to previous day and set start time to 16:30.00.000 

SET @StartDate = GetDate() 
SET @StartDate = DateAdd(dd,- 1, @StartDate) 
SET @StartDate = DateAdd(hh,- (DatePart(hh,@StartDate))+16, @StartDate) 
SET @StartDate = DateAdd(mi,- (DatePart(mi,@StartDate))+30, @StartDate) 
SET @StartDate = DateAdd(ss,- (DatePart(ss,@StartDate)), @StartDate) 
SET @StartDate = DateAdd(ms,- (DatePart(ms,@StartDate)), @StartDate) 

Hoffe, das hilft jemandem.

Verwandte Themen