[英]MS SQL Server Query Date functions to MySQL
我有這個 MS SQL Server 查詢:
SELECT DATEPART(MONTH, si.score_date),
MAX(si.score_value)
FROM score_info AS si
WHERE si.score_date >= DATEADD(MONTH, -3, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0))
GROUP BY DATEPART(MONTH, si.score_date);
現在我很難將此查詢轉換為 MySQL,尤其是這部分:
DATEADD(MONTH, -3, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0))
到目前為止,這是我從 MS SQL Server 查詢轉換為 MySQL 查詢的內容:
DATEPART(MONTH, si.score_date)
到
EXTRACT(MONTH FROM si.score_date)
請幫助我,因為我正處於學習階段。 非常感謝。
這個 T-SQL 表達式:
DATEADD(MONTH, -3, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0))
為您提供 3 個月前的一個月的第一天(截至今天 3 月 30 日,即 12 月 1 日)。
在 MySQL 中,您可以獲得相同的結果,如下所示:
DATE_FORMAT(CURRENT_DATE, '%Y-%m-01') - INTERVAL 3 MONTH
此外, EXTRACT(MONTH FROM si.score_date)
可以縮短為MONTH(si.score_date)
一下, MONTH()
函數存在於 MySQL 和 TSQL 中)。 但請注意,大概您還想保留年份部分,以防您的數據跨越數年。
我會將您的查詢寫為:
SELECT
DATE_FORMAT(si.score_date, '%Y-%m-01') year_month,
MAX(si.score_value) max_score
FROM score_info AS si
WHERE si.score_date >= DATE_FORMAT(CURRENT_DATE, '%Y-%m-01') - INTERVAL 3 MONTH
GROUP BY DATE_FORMAT(si.score_date, '%Y-%m-01'));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.