MySQLへのMS SQL Serverクエリの日付関数

sql_newbie:

私はこの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))

これまでのところ、ここで私は、MySQLのクエリにMS SQL Serverのクエリから変換されたものです:

DATEPART(MONTH, si.score_date)

EXTRACT(MONTH FROM si.score_date)

私は私の学習段階にだとして私を助けてください。どうもありがとうございます。

GMB:

このT-SQL式:

DATEADD(MONTH, -3, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0))

(12月1日です今日3月30日、のような)3ヶ月前に、あなたの月の最初の日を与えます。

MySQLでは、あなたはそうのような同じ結果を得ることができます。

DATE_FORMAT(CURRENT_DATE, '%Y-%m-01') - INTERVAL 3 MONTH

また、EXTRACT(MONTH FROM si.score_date)のように短縮することができるMONTH(si.score_date)MONTH()関数により、MySQLおよびTSQLの両方に存在します)。しかし、おそらく、あなたはseverl年以上の場合には、同様にあなたのデータのスプレッドを年の部分を残しておきたいことに注意してください。

私はあなたのクエリをとして記述します。

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'));

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=395716&siteId=1