SQL 10 函式 3 日期時間函式 - 5 計算日期差額
有時候我們需要計算連個日期的差額,比如計算“回款日”和驗收日之間所差的天數,或者檢索所有“最後一次登陸日期”與當前日期的差額大於100天的使用者資訊。主流的資料庫系統中都提供了對計算日期差額的支援。
1. MySQL
MySQL中使用DATEDIFF()函式用於計算兩個日期之間的差額,其引數呼叫格式如下:
DATEDIFF(date1, date2 )
函式將返回date1與date2之間的天數差額,如果date2在date1之後,則返回正值,否則返回負值。
比如下面的SQL語句用於計算註冊日期和出生日期之間的天數差額:
SELECT FRegDay, FBirthday, DATEDIFF(FRegDay, FBirthday), DATEDIFF(FBirthday, FRegDay) FROM T_Person
DATEDIFF()函式只能計算兩個日期間的天數擦和,如果要計算兩個日期的周差額等就需要進行換算,比如下面的SQL語句用於計算註冊日期和出生日期之間的週數差額:
SELECT FRegDay, FBirthday, DATEDIFF(FRegDay, FBirthday)/7 FROM T_Person
2.Oracle
在Oracle中,可以在兩個日期型別的資料之間使用減號運算子“-”,其計算結果為兩個日期之間的天數差,比如只想下面的SQL語句用於計算註冊日期FRegDay和出生日期FBirthday之間的時間間隔:
SELECT FRegDay, FBirthday, FRegDay-FBirthday FROM T_Person
通過減號運算子“-”計算的兩個日期之間的天數差是包含有小鼠部分的。小鼠部分是表示不足一天的部分,比如執行下面的SQL語句用於計算當前時刻和出生日期FBirthday之間的時間間隔:
SELECT SYSDATE, FBirthday, SYSDATE-FBirhday FROM T_Person
可以看到天數差的小數部分是非常精確的,所以完全可以精確地表示兩個日期時間值的小事、分、秒甚至毫秒部分。如果要計算兩個日期時間值之間的小時、分、秒甚至毫秒差的話,只要進行相應的換算就可以了,比如下面的SQL用來計算當前時刻和出生日期FBirthday之間的時間間隔(小時、分以及秒):
SELECT (SYSDATE-FBirthday)*24, (SYSDATE-FBirhday)*24*60, (SYSDATE-FBirthday)*24*60*60 FROM T_Person
下面的SQL語句用來計算當前時刻和出生日期FBirthday之間的周間隔:
SELECT SYSDATE, FBirthday, (SYSDATE-FBirthday)/7 FROM T_Person
可以從執行結果看到,計算結果含有非常精確的小數部分,不過如果對這些小數部分沒有需求的話,可以使用數值函式進行四捨五入、取最大整數等處理。比如下面的SQL用計算當前時刻和出生日期FBirthday之間的時間間隔(小時、分以及秒),並且對計算結果進行四捨五入:
SELECT ROUND((SYSDATE-FBirthday)*24), ROUND((SYSDATE-FBirthday)*24*60), ROUND((SYSDATE-FBirthday)*24*60*60) FROM T_Person
相關文章
- Clickhouse 時間日期函式函式
- SPL 的日期時間函式函式
- MySQL 的日期和時間函式MySql函式
- Go基礎-時間和日期函式Go函式
- MySQL日期和時間函式彙總MySql函式
- 探索MySQL高階語句(數學函式、聚合函式、字串函式、日期時間函式)MySql函式字串
- excel日期加減計算方法 excel計算日期時間差Excel
- oracle 10g函式大全–日期型函式Oracle 10g函式
- python中關於時間和日期函式的常用計算總結Python函式
- SQL SERVER 日期和時間資料型別及函式 (Transact-SQL)SQLServer資料型別函式
- MySQL(四)日期函式 NULL函式 字串函式MySql函式Null字串
- MySQL 日期函式、時間函式在實際場景中的應用MySql函式
- SQLSERVER日期函式(zt)SQLServer函式
- ORACLE中日期和時間函式彙總(轉載)Oracle函式
- hive時間日期函式及典型場景應用Hive函式
- Clickhouse SQL日期處理函式及案例分享SQL函式
- Oracle OCP(03):字元函式、數字函式和日期函式Oracle字元函式
- Haskell 中的日期函式Haskell函式
- mysql日期函式總結MySql函式
- MYSQL事件使用 日期函式MySql事件函式
- MySQL函式大全(字串函式,數學函式,日期函式,系統級函式,聚合函式)MySql函式字串
- T-SQL——函式——時間操作函式SQL函式
- oracle計算兩個日期的時間差時分秒Oracle
- oracle interval日期函式的bug!Oracle函式
- mysql 時間相關的函式 以及日期和字串互轉MySql函式字串
- 關於 Date 函式獲取各類時間/日期/天數函式
- 大資料開發-Hive-常用日期函式&&日期連續題sql套路大資料Hive函式SQL
- MySQL中日期和時間戳互相轉換的函式和方法MySql時間戳函式
- 日期加一天的函式函式
- PHP函式運用之返回兩給定日期的天數差PHP函式
- Go語言標準庫time之日期和時間相關函式Go函式
- 《MySQL 入門教程》第 16 篇 MySQL 常用函式之日期函式MySql函式
- Python獲取當前日期和日期差計算Python
- Django筆記二十五之資料庫函式之日期函式Django筆記資料庫函式
- Android 計算倆個日期差Android
- MySQL-日期和資料處理函式MySql函式
- mysql 獲取當前日期函式及時間格式化引數詳解MySql函式
- Oracle計算時間函式(對時間的加減numtodsinterval、numtoyminterval)Oracle函式
- GO語言————6.11 計算函式執行時間Go函式