2

私が直面している問題は、このクエリを実行すると、現在の日付から週間隔が開始されることです (現在の日付から 7 日を引いたもの)。過去 10 週間 (日曜から月曜) をすべてやりたいと思っています。したがって、現在の日付が月曜日、火曜日、または水曜日の場合、最新の日曜日から開始してから、過去 10 週間を振り返ります。WEEKDAYorDAYOFWEEKを使用する必要があると思いますDATE_SUBが、無駄に試しました:

SELECT
    SUM(MT.QUANTITY) as qty,
    WEEKDAY(MT.TRANS_DATE) AS WEEKDAY,
    WEEK(MT.TRANS_DATE) AS WEEK,
    YEAR(MT.TRANS_DATE) AS YEAR
FROM
    mytable MT
WHERE
        MT.TRANS_DATE > DATE_SUB(CURDATE(), INTERVAL 10 WEEK)
GROUP BY WEEK
4

1 に答える 1

4

DATE_SUB(STR_TO_DATE(CONCAT(YEAR(CURDATE()),WEEK(CURDATE()),' Sunday'), '%X%V %W'),INTERVAL 10 WEEK)次のようにを試してください。

SELECT
    SUM(MT.QUANTITY) as qty,
    WEEKDAY(MT.TRANS_DATE) AS WEEKDAY,
    WEEK(MT.TRANS_DATE) AS WEEK,
    YEAR(MT.TRANS_DATE) AS YEAR
FROM
    mytable MT
WHERE
        MT.TRANS_DATE > DATE_SUB(STR_TO_DATE(CONCAT(YEAR(CURDATE()),WEEK(CURDATE()),' Sunday'), '%X%V %W'),INTERVAL 10 WEEK)
GROUP BY WEEK

また、pilcrow が提案した別の方法を使用することもできます。

SUBDATE(CURDATE(), DAYOFWEEK(CURDATE()) - 1)

どちらが少し読みやすい...

于 2012-11-26T17:11:33.260 に答える