我們一般在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

這樣就可以回傳的值為日期格式,而不單單只是回傳一個整數囉!

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 丫德 的頭像
    丫德

    信德隨想

    丫德 發表在 痞客邦 留言(0) 人氣()