前提:
基於emp表,我想獲取入職日期在1980-12-17到1981-02-22的人員信息。
使用between…and…時發現無法獲取到日期爲1981-02-22的人員記錄。
between是左右閉區間,爲什麼無法獲取右邊區間的數據呢?
原因:
1.首先emp表格中hiredate的數據類型是datetime類型,當你使用between查找日期範圍的時候,會將
左區間‘1980-12-17’轉化爲‘1980-12-17 00:00:00’,
右區間‘1981-02-22’轉化爲‘1981-02-22 00:00:00’。
而emp表中實際是‘1981-02-22 01:00:00’,寫的sql語句截止到1981-02-22的0點以前,所以無法找到時間爲1981-02-22的1點的數據。
若我調整查找範圍,查找1980-12-17到1981-04-02範圍內入職員工信息,就能把右區間的數據查找出來。
原因是右區間‘1981-04-02’轉化爲‘1981-04-02 00:00:00’,emp表中實際存儲的也是‘1981-04-02 00:00:00’。
2.若emp表格中hiredate的數據類型是date類型,則使用between查找日期範圍的時候,就會把左右區間邊界都找出來。