2

私のデータベースには TIMESTAMP 型のデータ フィールドがあります。「マイタイム」と呼んでいます。PHP の time() 関数から数値を取得します。例えば:

print time();

次に、データベースにクエリを実行します。

SELECT * FROM mytable where mytime > 1369157557

それは不平を言う:

conversion error from string "1369157557"

PHP のタイムスタンプを Firebird のタイムスタンプと比較することはできないと思います。なぜだめですか?そして、どうすればそれを回避できますか?

4

2 に答える 2

3

2 つのオプションがあります: 比較する前にその UNIX タイムスタンプを Firebird タイムスタンプに変換します。または、Firebird-Support リストのこのメッセージに記載されているようなことを行います。

select DATEDIFF(second, timestamp '1/1/1970 00:00:00', current_timestamp)
from rdb$database

または具体的にはクエリで:

SELECT * 
FROM mytable 
where DATEDIFF(second, timestamp '1/1/1970 00:00:00', mytime) > 1369157557

データベースに保存されている時刻は UTC で保存されていない可能性があることに注意してください。その場合、UTC に対するオフセットも考慮する必要があります。

于 2013-05-22T12:57:29.757 に答える