一、從GETDATE()函數獲取日期
GETDATE()是SQL Server中最常用的日期時間函數之一,它可以返回當前系統日期和時間,包括日期、小時、分鐘、秒以及毫秒。
SELECT GETDATE() AS CurrentDateTime
執行以上代碼,將輸出一個包含系統當前日期時間的結果集(如2021-11-03 12:34:56.789)。我們可以使用DATEPART函數來獲取這個結果集中的年、月、日。
SELECT DATEPART(YEAR, GETDATE()) AS CurrentYear, DATEPART(MONTH, GETDATE()) AS CurrentMonth, DATEPART(DAY, GETDATE()) AS CurrentDay
二、從日期中截取年月日
如果我們已經有了日期,但是只需要其中的年、月、日等信息,我們可以使用CONVERT函數或者CAST函數截取。下面是使用CONVERT函數截取年、月、日的方法:
SELECT CONVERT(VARCHAR(10), GETDATE(), 120) AS CurrentDate, CONVERT(VARCHAR(7), GETDATE(), 120) AS CurrentMonth, CONVERT(VARCHAR(4), GETDATE(), 120) AS CurrentYear
上面的代碼中,第三個參數120是指定日期轉換的樣式,每種樣式代表了一種日期時間格式,詳見Microsoft官方文檔。我們也可以使用CAST函數截取年、月、日:
SELECT CAST(GETDATE() AS DATE) AS CurrentDate, CAST(YEAR(GETDATE()) AS NVARCHAR(4)) AS CurrentYear, CAST(MONTH(GETDATE()) AS NVARCHAR(2)) AS CurrentMonth, CAST(DAY(GETDATE()) AS NVARCHAR(2)) AS CurrentDay
三、使用日期函數統計信息
我們還可以使用日期函數來統計數據庫內的數據或者計算某段時間內的數據。下面是三個例子:
1.統計當前年份內訂單總數:
SELECT COUNT(*) AS TotalOrders FROM Orders WHERE YEAR(OrderDate) = YEAR(GETDATE())
2.統計每個月的訂單數:
SELECT COUNT(*) AS TotalOrders, YEAR(OrderDate) AS OrderYear, MONTH(OrderDate) AS OrderMonth FROM Orders GROUP BY YEAR(OrderDate), MONTH(OrderDate) ORDER BY YEAR(OrderDate), MONTH(OrderDate)
3.在一個月內計算每天的平均銷售額:
SELECT AVG(TotalAmount) AS DailyAverage FROM (SELECT DATEPART(YEAR, OrderDate) AS OrderYear, DATEPART(MONTH, OrderDate) AS OrderMonth, DATEPART(DAY, OrderDate) AS OrderDay, SUM(OrderAmount) AS TotalAmount FROM Orders WHERE MONTH(OrderDate) = 11 AND YEAR(OrderDate) = 2021 GROUP BY DATEPART(YEAR, OrderDate), DATEPART(MONTH, OrderDate), DATEPART(DAY, OrderDate)) AS Temp
四、總結
SQL Server提供了很多日期函數,GETDATE()是最常用的一個,可以返回當前系統日期和時間。我們還可以使用DATEPART函數、CONVERT函數、CAST函數來截取日期中的年、月、日等信息。值得注意的是,在使用日期函數時,一定要特別注意時間格式的問題,否則會導致統計出錯。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/182539.html