在 SQL 中,可以使用 WEEKDAY()
函數與其他日期函數結合來執行更復雜的日期操作。以下是一些示例,說明如何將 WEEKDAY()
與其他日期函數結合使用:
假設我們有一個名為 orders
的表,其中包含一個名為 order_date
的列,我們希望找到每個訂單所屬周的第一天(星期一)。
SELECT
order_id,
order_date,
WEEKDAY(order_date) AS week_start_day_of_week
FROM
orders;
但是,上述查詢并沒有真正地將日期調整為一周的第一天。為了實現這一點,我們可以使用 DATE_ADD()
和 WEEKDAY()
函數結合:
SELECT
order_id,
order_date,
DATE_ADD(order_date, INTERVAL WEEKDAY(order_date) - 1 DAY) AS week_start
FROM
orders;
假設我們想要計算兩個日期之間有多少完整的周。
SELECT
DATEDIFF(week, start_date, end_date) AS number_of_weeks
FROM
(VALUES ('2023-01-01'), ('2023-01-08')) AS t(start_date, end_date);
但是,上述查詢返回的是兩個日期之間的天數差除以7的結果,它可能不會返回整數周數。為了確保返回的是完整的周數,我們可以使用 FLOOR()
函數:
SELECT
FLOOR(DATEDIFF(day, start_date, end_date) / 7.0) AS number_of_weeks
FROM
(VALUES ('2023-01-01'), ('2023-01-08')) AS t(start_date, end_date);
注意:在上述示例中,我們使用了 DATEDIFF()
函數來計算兩個日期之間的天數差,并使用 FLOOR()
函數將結果除以7并向下取整,從而得到完整的周數。