2016-10-09 2 views
0

私は変数$date="2016-10-09 10:44:03";とメッセージリストをdate_postTIMESTAMP CURRENT_TIMESTAMP)の順に並べています。私はDatediff秒はエラーを返します

SELECT *,DATEDIFF(second, $date,date_post) AS duration 
FROM messages 
WHERE condition 

から結果を返すようにしたいが、それは

与えられた引数がで有効なMySQLの結果リソースではないエラーを返し

$dateは秒間いつもより低いdate_postです)...

数値を返すことを推奨しますが、エラーを返すだけです。 sintaxによると$dateDATEDIFFに最初に書かれていなければなりません。私はCAST($date)を使用しようとしましたが、何もしませんでした。それを使用する前に$dateを変更する必要がありますか?私はDATEDIFF(date_post,date_post)戻り0で動作していますが、秒単位で差をつけたい場合は$dateリターンエラー

+0

MySQL DATEDIFFの構文は、あなたのケースでは 'DATEDIFF($ date、date_post)'なので、構文について言及するときにあなた自身が質問に答えました。間隔は指定しないでください。 –

+0

'DATEDIFF($ date、date_post) 'を使用するとエラーも返されます。私は秒の間隔を返すことになっています。 – Max

答えて

0

で、最も簡単な方法は、to_seconds()を使用する場合:

SELECT m.*, 
     (to_seconds(date_post) - to_seconds($date))AS duration 
FROM messages m 
WHERE condition; 

使用している機能は、SQL Serverの機能であります。 MySQLでは、datediff()は2つの日付の差を日数で返します。

+0

ありがとうございますが、私のサーバは 'mySQL 4.x.x'で動作します。recongnize' to_seconds()ではありません。 – Max

+0

以前のバージョンのMySQLでは 'TIME_TO_SEC'になります。しかし、そうするためには、日付の「時間」部分を抽出する必要があります。以前のバージョンが 'TIMESTAMPDIFF'をサポートしているかどうかは不明ですが、間隔を指定することができます。 –

+0

これは 'TIMESTAMPDIFF'で働いてくれてありがとう! – Max

関連する問題