1

UNIXタイムスタンプを含むフィールドを持つテーブルがあり、1時間以上前のレコードを取得しようとしていました

select * from table_name where (date('now','unixepoch') - table_field) > 3600

しかし、これにはレコードがまったく表示されませんが、数日前の時刻のスタンプを含むフィールドがあります。table_field > 1すべてのレコードを出力するような単純な条件がある場合。しかし、上部のステートメントが機能しないのはなぜですか?

4

1 に答える 1

1

この'unixepoch'修飾子は、Unix タイムスタンプ番号をdate関数が理解できる形式に変換します。ただし、日付文字列から Unix タイムスタンプに変換したい場合:

SELECT *
FROM table_name
WHERE strftime('%s', 'now') - field > 3600

秒数を数える代わりに、修飾子を使用することもできます(ただし、減算がなければ、返される文字列はstrftime自動的に数値に変換されません)。

SELECT *
FROM table_name
WHERE CAST(strftime('%s', 'now', '-1 hours') AS INT) > field
于 2012-11-29T12:14:16.153 に答える