今日は、
where date(`entry_date`) = curdate()
今月は、
where month(`entry_date`) = month(curdate())
and year(`entry_date`) = year(curdate())
今週は
WHERE `entry_date`
BETWEEN (CURDATE() - Interval DAYOFWEEK(CURDATE()) day)
AND (CURDATE() - Interval DAYOFWEEK(CURDATE()) day + Interval 1 week)
上記のクエリは理解に役立ちます。しかし、パフォーマンスの観点からは良くありません。以下の変更されたものを参照してください。そのはるかに優れています。
SET @s:=(CURDATE() - Interval DAYOFWEEK(CURDATE()) day)
SET @e:=(CURDATE() - Interval DAYOFWEEK(CURDATE()) day + Interval 1 week)
SELECT .... WHERE `entry_date` BETWEEN @s AND @e
ここで DAYOFWEEK 関数は、1 = 日曜日から始まる整数を返します。したがって、週は開始日として土曜日としてカウントされます。月曜日が必要な場合は+ Interval 2 day
、Interval を追加します。
以下のように簡略化することもできます。ただし、どの曜日も週の最初の曜日としてサポートされていません。したがって、すべての文化に移植できるわけではありません。
where yearweek(`entry_date`) = yearweek(curdate())