0

すべての日付をタイムスタンプ(int)としてデータベースに保存しています。

正確に3日前の日付を取得するにはどうすればよいですか?

私は試した

SELECT date from user WHERE  DATE_ADD(DATE( FROM_UNIXTIME( `created` ) ), INTERVAL 3 DAY) = CURDATE()

それを行うための最良/最も効率的な方法ですか?

4

2 に答える 2

1

データベースは、次のように、範囲を定義するために日付の追加を2回だけ行うことを好むと思います。

SELECT date FROM user
WHERE UNIX_TIMESTAMP(DATE_ADD(CURDATE(), INTERVAL -3 DAY)) <= `created`
AND `created` < UNIX_TIMESTAMP(DATE_ADD(CURDATE(), INTERVAL -2 DAY));

どちらの場合も、SELECT の前に DESCRIBE キーワードを置いてテストすると、データベースはクエリの実行方法を応答します。

于 2012-06-27T18:58:18.010 に答える
0
SELECT date
FROM user
WHERE created = UNIX_TIMESTAMP(CURRENT_DATE - INTERVAL 3 DAY)

注: createdwhere 句の列で使用される関数はありません。このクエリは、インデックスを使用できる必要があります。

于 2012-06-27T19:05:25.563 に答える