1. ホーム
  2. sql

SQL 30日以上前の全レコードを取得する

2023-08-18 08:02:05

質問

私は30日以上前のレコードを取得しようとしていますが、私のテーブルフィールドはunix_timestampです。他のすべての例は、DateTimeフィールドか何かを使用しているようです。いくつか試してみましたが、それらを動作させることはできませんでした。

これは間違いなく下で動作しません。また、私は間の日付が欲しいのではなく、データベースに格納されているunixタイムスタンプから30日後のすべてのレコードが欲しいのです。 私は非アクティブなユーザーをプルーンしようとしています。

簡単な例...動作しません。

SELECT * from profiles WHERE last_login < UNIX_TIMESTAMP(NOW(), INTERVAL 30 DAY)  

そして、これを試してみました。

SELECT * from profiles WHERE UNIX_TIMESTAMP(last_login - INTERVAL 30 DAY) 

複雑な日付のクエリはあまり得意ではありません。どんな助けでも感謝します。

どのように解決するのですか?

次のような方法を試してみてください。

SELECT * from profiles WHERE to_timestamp(last_login) < NOW() - INTERVAL '30 days' 

マニュアルから引用します。

倍精度の引数を受け取り、Unixエポック(1970-01-01 00:00:00+00からの秒数)からタイムゾーン付きのタイムスタンプに変換します(整数のUnixエポックは暗黙のうちに倍精度にキャストされます)。(整数のUnixエポックは暗黙のうちに倍精度にキャストされます)。