首先可恥的貼出一段官方看法
http://www.w3school.com.cn/sql/func_datediff.asp
定義和用法
DATEDIFF() 函數返回兩個日期之間的天數。
語法
DATEDIFF(datepart,startdate,enddate)
startdate 和 enddate 參數是合法的日期表達式。
datepart 參數可以是下列的值:
| datepart | 縮寫 |
|---|---|
| 年 | yy, yyyy |
| 季度 | qq, q |
| 月 | mm, m |
| 年中的日 | dy, y |
| 日 | dd, d |
| 周 | wk, ww |
| 星期 | dw, w |
| 小時 | hh |
| 分鍾 | mi, n |
| 秒 | ss, s |
| 毫秒 | ms |
| 微妙 | mcs |
| 納秒 | ns |
實例
例子 1
使用如下 SELECT 語句:
SELECT DATEDIFF(day,'2008-12-29','2008-12-30') AS DiffDate
結果:
| DiffDate |
|---|
| 1 |
例子 2
使用如下 SELECT 語句:
SELECT DATEDIFF(day,'2008-12-30','2008-12-29') AS DiffDate
結果:
| DiffDate |
|---|
| -1 |
上面一段是著名的網頁學習網站w3school中有關datediff()方法的描述。但此中卻少了一個重要的信息:那就是最大值
使用datediff方法會得到一個long類型的數字,但這個數字對毫秒和秒得出的最大值是有限制的。對於毫秒最大數是24天20小時31分零23.647秒。
對於秒最大數是68年。
如果超過最大值的話,會有如下錯誤信息顯示:Difference of two datetime fields caused overflow at runtime.
之所以標紅是因為不遇到一次很難會想到這點,建議盡量用秒就好。
