天天看點

SQL | 時間函數1 函數1:MySQL DATEDIFF() 函數2 函數2: SQL Server DATEDIFF() 函數3 總結4 參考資料

計算兩個時間之差

  • 1 函數1:MySQL DATEDIFF() 函數
  • 2 函數2: SQL Server DATEDIFF() 函數
  • 3 總結
  • 4 參考資料

1 函數1:MySQL DATEDIFF() 函數

SQL | 時間函數1 函數1:MySQL DATEDIFF() 函數2 函數2: SQL Server DATEDIFF() 函數3 總結4 參考資料

總結:

  • MySQL DATEDIFF() 函數中隻有兩個參數,即兩個時間,傳回結果是前面的時間減去後面的時間。
  • 注意時間的格式要求:‘2008-12-30’ 如果不是這種格式,得首先進行格式的修改,修改的SQL語句見下面:
datediff(concat(substr(t1.day,1,4),'-',substr(t1.day,5,2),'-',substr(t1.day,7,2)),concat(substr(t2.day,1,4),'-',substr(t2.day,5,2),'-',substr(t2.day,7,2))) as diff
           
  • 即使用concat函數進行字元串的連接配接,中間記得加上 ‘-’ 然後concat函數中的參數是逗号相連接配接!
  • 另外SQL中的substr函數類似于python:
substr(str, start, length)
           

注意第二個參數是截取字元串的長度!來看個具體的例子就很清晰了!

SQL | 時間函數1 函數1:MySQL DATEDIFF() 函數2 函數2: SQL Server DATEDIFF() 函數3 總結4 參考資料

2 函數2: SQL Server DATEDIFF() 函數

這個函數和上面的會有些差别,具體的差異展現在下面兩個地方:

  • 第一個差異是:函數内參數有3個!
DATEDIFF(datepart,startdate,enddate)
           

其中datepart可以為下面這些參數:

SQL | 時間函數1 函數1:MySQL DATEDIFF() 函數2 函數2: SQL Server DATEDIFF() 函數3 總結4 參考資料

另外兩個參數和上述的時間函數保持一緻

  • 第二個差異就是在計算方式存在差異,第一個時間函數是前面的時間減去後面的時間,而這個函數則是 :後面的時間減去前面的時間!舉個栗子!
    SQL | 時間函數1 函數1:MySQL DATEDIFF() 函數2 函數2: SQL Server DATEDIFF() 函數3 總結4 參考資料

3 總結

  • datediff函數有兩種:MySQL和SQL Server中
  • 差異:參數個數和計算方式不同
  • MySQL:2個參數,前-後
  • SQL Server:3個參數,後-前

4 參考資料

  • http://www.w3school.com.cn/sql/func_datediff.asp
  • http://www.w3school.com.cn/sql/func_datediff_mysql.asp