我們一般在sql server中求日期,都是用datediff這個函數,但有同事問要如果取得只有結束時間,但要求得開始時間的方法,所以在google上找了一下,大約有找到答案,試了的結果也是對的,在此公佈跟大家分享
首先介紹datedff的用法,沒用過的人可以就參考一下sql server的bookonline
語法為:DATEDIFF ( datepart , startdate , enddate )
例如 select datediff(HH,'2008/11/20 10:21:00','2008/11/20 11:53:00')
得到的結果為3小時
若想的往前推的話,就把sql改成
select datediff(HH,'2008/11/20 13:21:00','2008/11/20 10:53:00')
得到的結果為-3小時
但這樣的結果不是我們要的,因為下完後回傳的類型為int數字我們要的是希望下出來的結果是傳回一個日期與時間
例如 2008/11/22 11:32:00這樣的格式
於是有了另一個解法,使用dateadd,沒用過的人可以就參考一下sql server的bookonline
語法為:DATEADD (datepart , number, date )
我們可以下select dateadd(mi,-1320,'2008/11/20 10:21:00')
mi:指的是以分鐘來當作基礎
-1320:指的是往前推1320分鐘,你可以不打"-",這樣就是往後加的意思
'2008/11/20 10:21:00'-:指的是我要以那個日期時間當作被加數或被減數
回傳結果為2008-11-19 12:21:00.000
這樣就可以回傳的值為日期格式,而不單單只是回傳一個整數囉!
留言列表