最も簡単な方法は、列を次のようにすることです。
CREATE TABLE foo(
whatever_id int auto_increment,
myTS timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY(whatever_id)
);
このようにして、行に何かがあるときはいつでも、myTS は現在の日付で自動的に更新されます。CURRENT_TIMESTAMP のデフォルト値はオプションです。唯一の欠点は、MySQL では、テーブル内の 1 つの列DEFAULT
にON UPDATE
のみCURRENT_TIMESTAMP
. しかし、回避策があり、それは今では行き過ぎています。あなたが知る必要があるかどうか尋ねてください。
次に、7日以上前の行が必要な場合は、次のようにします
SELECT
*
FROM foo
WHERE
DATEDIFF(CURDATE(), myTS) >= 7
/*or
DATEDIFF(CURDATE(), myTS) >= DATE_SUB(NOW(), INTERVAL 1 WEEK)
*/
DATEDIFF
関数の詳細については、こちらをご覧ください。
または別の方法は
SELECT
*
FROM foo
WHERE
DATE_ADD(myTS, INTERVAL 1 WEEK) <= CURDATE()
DATE_ADD
上記と同じリンクの下で関数の詳細を読むことができます。
もちろん、単純に日付を手動で選択することもできます。
SELECT
*
FROM foo
WHERE
myTS < '2012-07-02'
ただし、timestamp
列は日付と時刻の値で構成されていることに注意してください。したがって、上記の query のようなものを記述すると、暗黙的に'2012-07-02 00:00:00'
. したがって、次のようなものが必要な<= 2012-07-02 (the whole day)
場合は、 と書く必要があります<= '2012-07-02 23:59:59'
。これが混乱を招く場合に備えて、それを追加したかった.