如何在單個查詢中添加小時和分鐘?如何在單個查詢中添加小時和分鐘
我想這
Select DATEADD(hh,23.59,CAST('2016-07-08' AS DATETIME))
我需要廣告23小時59分鐘,但我的代碼只添加小時。爲什麼?
如何在單個查詢中添加小時和分鐘?如何在單個查詢中添加小時和分鐘
我想這
Select DATEADD(hh,23.59,CAST('2016-07-08' AS DATETIME))
我需要廣告23小時59分鐘,但我的代碼只添加小時。爲什麼?
這個怎麼樣?
Select DATEADD(minute, 23*60 + 59, CAST('2016-07-08' AS DATETIME))
編輯:
如果你得到一個浮點/十進制值,如23.59,那麼你可以做:
Select DATEADD(minute, FLOOR(@hhmm) * 60 + (@hhmm - FLOOR(@hhmm)) * 100, CAST('2016-07-08' AS DATETIME))
注意:您還可以使用:
Select DATEADD(minute, FLOOR(@hhmm) * 60 + (@hhmm % 1) * 100, CAST('2016-07-08' AS DATETIME))
但我發現模數運算符的這種用法略微不合適。
數學救援! –
謝謝我試過這個如何分割來自數據庫23.59的浮點值,它會驗證它可以有任何值,如20,18.30 15.22我如何乘以小時部分像23 * 60並添加分鐘59 –
您還可以使用DATEADD()
兩次:
Select DATEADD(minute,59,DATEADD(hh,23,CAST('2016-07-08' AS DATETIME)))
的datepart
的說法,你的情況hh
,是整數被添加到哪個日期的一部分。所以DATEADD
函數只是忽略輸入的任何小數部分。
爲了得到結果,你想要的,你必須要麼使用DATEADD
兩次,增加23小時,然後59分鐘,或一天添加到您的日期和減去1分,這樣的:
Select DATEADD(MI, -1, CAST('2016-07-08' AS DATETIME) + 1)
謝謝託比,我編輯了我的答案,希望它回答他的問題。 – Oleg
另一種方法:你可以通過添加一天,然後分鐘。減去
輸出做的是同樣的
select DATEADD(minute, -1, DATEADD(DAY, 1,CAST('2016-07-08' AS DATETIME)))
DATEADD和23.59 * 60?或者在DATEADD上打兩個電話? (一個小時,一個分鐘) – MatBailie
如果這是爲了定義一段時間的終點,你應該知道,計算一個獨佔終點通常非常容易*並且使用'<'而不是'<=' )而不是計算包含端點。例如。目前你打算在當天的最後一分鐘排除發生的任何事情嗎? –