MySQLで特定日(月初・月末)を求めるクエリ

・基本
●先月の末日

DATE( DATE_SUB(NOW(), INTERVAL DAYOFMONTH(NOW()) DAY) )

現在 – 今月の今までの日数 = 先月末日の現時刻 で、DATEで日付に丸める。

●今月の初日

DATE( DATE_SUB(NOW(), INTERVAL DAYOFMONTH(NOW())-1 DAY) )

現在 – (今月の今までの日数-1) = 今月初日の現時刻 で、DATEで日付に丸める。

●今月の末日

LAST_DAY(NOW())

●Nヶ月前の初日

DATE( DATE_SUB( DATE_SUB(NOW(), INTERVAL DAYOFMONTH(NOW()) -1 DAY), INTERVAL N MONTH))

●Nヶ月前の末日

LAST_DAY( DATE( DATE_SUB( DATE_SUB(NOW(), INTERVAL DAYOFMONTH(NOW()) -1 DAY), INTERVAL N MONTH)))

 月次集計バッチで前月の期間を指定する場合・・・

SELECT * FROM logs WHERE logs.created >= DATE(DATE_SUB(NOW(), INTERVAL DAYOFMONTH(NOW()) DAY)) AND logs.created < DATE(DATE_SUB(NOW(), INTERVAL DAYOFMONTH(NOW())-1 DAY))

(1053)


カテゴリー: MySQL   パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です