2010-05-17 63 views
8

我需要將datetime變量設置爲從現在開始的兩天,但它的時間部分必須是18:00。將日期時間變量的時間部分設置爲18:00

例如,如果我撥打getdate()現在我會得到2010-05-17 13:18:07.260。我需要將它設置爲2010-05-19 18:00:00.000

有沒有人有一個很好的片段或任何想法如何做到這一點對嗎?

回答

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

這將截斷當前日期並將其加上2天18小時(24 * 2 + 18)

的可能變化:

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

太棒了,非常感謝。完美的作品。 – 2010-05-17 09:38:40

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

我必須做同樣的事情,創建一個特定時間的前一天 這當天運行到一定時間的過程就是我爲了將開始日期設置爲前一天的16:30,基本上減去你不想讓它們回到0的部分,然後添加你想要的值。

-- 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) 

希望這可以幫助別人。

相關問題