在SQL Server中,有時候查詢資料時,需要限定查詢時間范圍,此時需要對時間進行運算, 如下所示:
USE AdventureWorks2014;GOSELECT *FROM HumanResources.EmployeeWHERE ModifiedDate > GETDATE() - 20;
例如,獲取前一天的時間,可以用下面這樣的SQL陳述句,
SELECT GETDATE() -1, GETDATE();
至于為什么寫這樣的SQL,一來這樣書寫非常簡單方便,比用DATEADD函式要簡便一點,另外,就是很多時候臨時查數會這樣寫,如果對GETDATE進行加減的時間粒度為小時或分鐘,那么就要特別注意了,放上兩個SQL,你仔細品一品下面兩個SQL的差別
SELECT GETDATE() -1/24, GETDATE();
![clip_image001[13] clip_image001[13]](https://img.uj5u.com/2020/09/11/54656111203181.png)
SELECT GETDATE() -1.0/24, GETDATE();
![clip_image002[13] clip_image002[13]](https://img.uj5u.com/2020/09/11/54656111203182.png)
如果沒有注意這個細節問題,就會踩一些坑,僅僅是因為SQL Server中,1/24是整數運算,計算結果為0, 必須轉換為浮點數運算,雖然沒有什么技術含量,但是有時候很多人不小心采坑,尤其是經常在多種型別資料庫切換的人,因為像Oracle資料庫又跟SQL Server不一樣,如下所示
SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
Session altered.SQL> select sysdate, sysdate -1/24 from dual;
SYSDATE SYSDATE-1/24
------------------- -------------------2020-03-28 11:32:27 2020-03-28 10:32:27SQL> SQL> select 1/24 from dual;
1/24
----------
.041666667
![clip_image003[13] clip_image003[13]](https://img.uj5u.com/2020/09/11/54656111203183.png)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/5551.html
標籤:SQL Server
