web-dev-qa-db-ja.com

48時間以内のレコードのクエリ

次のようなmysqlデータベースにデータを保存しています。

ID     |   DATE      |  INFO
-----------------------------
1      | 1389384821  |  blabla
2      | 1389384821  |  blabla2
3      | 1389384821  |  blabla3

DATEは、PHPのtime()関数を使用してデータベースに追加する前に生成されるタイムスタンプです

このテーブルから過去24時間、または48時間、30日間に追加されたすべてのデータを取得したい...

私は試した

SELECT
info
FROM table
WHERE date > (LOCALTIMESTAMP() - 86400)

LOCALTIMESTAMP()の代わりに、CURDATE()も試しました。

私の間違いはどこですか?

私はSQLの専門家ではないので、これはばかげた質問に聞こえるかもしれません。


WHERE日付>(UNIX_TIMESTAMP(NOW())-86400)??これは良い解決策ですか?

2
Adrian George

こちらは24時間です

_SELECT info FROM table
WHERE date > UNIX_TIMESTAMP(NOW() - INTERVAL 1 DAY);
_

または

_SELECT info FROM table
WHERE date > UNIX_TIMESTAMP(NOW() - INTERVAL 24 HOUR);
_

またはあなたの方法

_SELECT info FROM table
WHERE date > (UNIX_TIMESTAMP(NOW()) - 86400); 
_

こちらは48時間です

_SELECT info FROM table
WHERE date > UNIX_TIMESTAMP(NOW() - INTERVAL 2 DAY);
_

または

_SELECT info FROM table
WHERE date > UNIX_TIMESTAMP(NOW() - INTERVAL 48 HOUR);
_

またはあなたの方法

_SELECT info FROM table
WHERE date > (UNIX_TIMESTAMP(NOW()) - (86400 * 2)); 
_

こちらは30日

_SELECT info FROM table
WHERE date > UNIX_TIMESTAMP(NOW() - INTERVAL 30 DAY);
_

またはあなたの方法

_SELECT info FROM table
WHERE date > (UNIX_TIMESTAMP(NOW()) - (86400 * 30)); 
_

最後の式WHERE date > (UNIX_TIMESTAMP(NOW()) - 86400)は実行可能ですが、秒数の差を計算する必要があります。私の追加の提案により、MySQLで日付の計算を行うことができます。

4
RolandoMySQLDBA