SQL Server Datepart()函數

在本教學中,將學習如何使用SQL Server DATEPART()函數來提取日期的一部分。

SQL Server DATEPART()函數簡介

DATEPART()函數返回一個整數,它是日期的一部分,例如日,月和年。

以下是DATEPART()函數的語法:

DATEPART ( date_part , input_date )

DATEPART()函數有兩個參數:

  • date_part是要提取的日期的一部分(參見下表中的有效日期部分)。
  • input_date是提取日期部分的日期。
date_part 縮寫形式
year yy, yyyy
quarter qq, q
month mm, m
dayofyear dy, y
day dd, d
week wk, ww
weekday dw
hour hh
minute mi, n
second ss, s
millisecond ms
microsecond mcs
nanosecond ns
TZoffset tz
ISO_WEEK isowk, isoww

SQL Server DATEPART()示例

下麵來看一些使用DATEPART()函數的例子。

1. 將DATEPART()函數與變數一起使用

這個示例中將使用DATEPART()函數提取日期值的各個部分存儲在變數中:

DECLARE @d DATETIME = '2022-03-04 15:30:18';
SELECT
   DATEPART(year, @d) year,
   DATEPART(quarter, @d) quarter,
   DATEPART(month, @d) month,
   DATEPART(day, @d) day,
   DATEPART(hour, @d) hour,
   DATEPART(minute, @d) minute,
   DATEPART(second, @d) second;

執行上面查詢語句,得到以下結果:

Datepart()函數

2. 使用DATEPART()函數與表列示例

下麵將使用示例資料庫中的sales.orderssales.order_items進行演示。

訂單表結構

以下示例使用DATEPART()函數按年,季度,月和日查詢總銷售額。

SELECT DATEPART(year, shipped_date) [year],
       DATEPART(quarter, shipped_date) [quarter],
       DATEPART(month, shipped_date) [month],
       DATEPART(day, shipped_date) [day],
       SUM(quantity * list_price) gross_sales
FROM sales.orders o
     INNER JOIN sales.order_items i ON i.order_id = o.order_id
WHERE shipped_date IS NOT NULL
GROUP BY DATEPART(year, shipped_date),
         DATEPART(quarter, shipped_date),
         DATEPART(month, shipped_date),
         DATEPART(day, shipped_date)
ORDER BY [year] DESC,  [quarter],  [month],  [day];

執行上面查詢語句,得到以下結果:
DATEPART()函數與表列示例

在此示例中,使用DATEPART()函數從shipped_date列中的值中提取年,季度,月和日。 在GROUP BY子句中,我們按日期部分匯總了總銷售額(quantity * list_price)。

請注意,可以在SELECTWHEREHAVINGGROUP BYORDER BY子句中使用DATEPART()函數。

在本教學中,學習了如何使用SQL Server DATEPART()從日期中提取日期部分。


上一篇: SQL Server日期函數 下一篇: SQL Server字串函數