私がこのような日付を持っている場合:
'2013-03-25'
そして、MySQLクエリを「昨日」で書きたいのですがWHERE
、どうすればよいですか?
これはそれを行う必要があります:
WHERE `date` = CURDATE() - INTERVAL 1 DAY
昨日の日付を取得する簡単な方法は、subdate()
関数を使用することです。
subdate(currentDate, 1)
私はあなたが探していると思います:
DATE_ADD(date_column, INTERVAL -1 DAY)
https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.htmlを参照してください
これをもう一度頭に巻くには、常にコードスニペットを参照する必要があります。
日時をUTCでデータベースに保存するのが通例です。ただし、通常、レポートを生成するときは、特定のタイムゾーンに合わせて時間を調整する必要があります。
太平洋時間に合わせて調整された、昨日の選択を示すために使用するスニペットは次のとおりです。
SET @date_start = DATE_SUB((CURDATE() - INTERVAL 1 DAY), INTERVAL 8 HOUR);
SET @date_end = DATE_SUB(CURDATE(), INTERVAL 8 HOUR);
SELECT
projects.token,
projects.created_at as 'UTC created_at',
DATE_SUB(projects.created_at, INTERVAL 8 HOUR) as 'Pacific created_at'
FROM
projects
WHERE
projects.created_at BETWEEN @date_start AND @date_end;
注:見やすくするために、スニペットで変数を設定しました。最終的なクエリを作成するときは、通常、変数を使用しません。