2012-08-30 86 views
0

我一直在嘗試這一段時間,迄今爲止研究沒有得到更多的東西,除了我需要使用的東西DATEPART(我不知道如何使用它) 。我的SQL Server不是最好的。SQL Server:從日期時間獲取小時,然後更改它

我有declare @DueDate datetime並通過遊標@DueDate將始終是當前行的DueDatedatetime)列。這到目前爲止完美沒有問題。

現在我試圖做的就是一小時出@DueDate,檢查,看它是否爲0,如果時間爲0時,@DueDate小時設置爲午夜,然後更新該行與此@DueDate交貨期列變量。如上所述,我有光標和變量都工作,我只是不知道如何從@DueDate得到小時,檢查那個小時的值是什麼,並更新@DueDate變量,使其小時現在是午夜。我知道如何更新表格,這是很容易的部分。

在此先感謝!

回答

3

我認爲這完全是你想要的而不使用遊標。

UPDATE [MyTable] 
SET DueDate = DATEADD(dd, 1, DueDate) -- add one day (set to midnight) 
WHERE DATEPART(hh, DueDate) = 0 -- do this for dates where hour is zero (midnight) 

請注意,您應該儘可能避免使用遊標。 SQL開發需要不同的思考方式。不要考慮迭代,認爲原子。你可以在一個陳述中做大多數事情(如果複雜的話,一個陳述可能很長)。

+0

這增加了一天,並沒有工作,但我修改了代碼工作,設置duedate = dateadd(hh,1,duedate)。 –

+3

@LandinMartens。因此,您將採用午夜的所有日期,並將其設置爲凌晨1點。這不是你要求的,但很高興我可以幫忙! –

相關問題