天天看點

SQL Server中GETDATE轉換時間時注意事項

在SQL Server中,有時候查詢資料時,需要限定查詢時間範圍。此時需要對時間進行運算, 如下所示:

例如,擷取前一天的時間,可以用下面這樣的SQL語句。

    SELECT GETDATE() -1, GETDATE();

至于為什麼寫這樣的SQL,一來這樣書寫非常簡單友善,比用DATEADD函數要簡便一點,另外,就是很多時候臨時查數會這樣寫。如果對GETDATE進行加減的時間粒度為小時或分鐘,那麼就要特别注意了。放上兩個SQL,你仔細品一品下面兩個SQL的差别

SELECT GETDATE() -1/24, GETDATE();

SQL Server中GETDATE轉換時間時注意事項

SELECT GETDATE() -1.0/24, GETDATE();

SQL Server中GETDATE轉換時間時注意事項

如果沒有注意這個細節問題,就會踩一些坑。僅僅是因為SQL Server中,1/24是整數運算,計算結果為0, 必須轉換為浮點數運算。雖然沒有什麼技術含量,但是有時候很多人不小心采坑,尤其是經常在多種類型資料庫切換的人,因為像Oracle資料庫又跟SQL Server不一樣。如下所示

SQL Server中GETDATE轉換時間時注意事項