2012-01-23 11 views
-1
$sql = mysql_query("SELECT * FROM users WHERE TO_SECONDS(NOW())-TO_SECONDS(TS) <= 604800 "); 

TSはタイムスタンプの列です。 604800は秒単位で7日間です。mysqlクエリはLinux上にないウィンドウで動作します

このクエリは、ローカルで完全にWindows上で実行されますが、linuxサーバーにアップロードすると動作が停止します。

誰かお手伝いできますか?

+0

本当に主な問題はクエリですか?あなたはmysqlコマンドパネルでそれをテストできますか? – Eray

+0

あなたは何がうまくいかないかを明確にすることができますか? –

+1

'停止する'は説明ではありません。 mysqlがインストールされていますか? – zerkms

答えて

1

TO_SECONDSは、バージョンが5.5以上のSQL版にのみ存在します。あなたのバージョンはLinuxで確認してください。ほとんどの場合、ディストリビューションのバージョンは古くなっています。

アップグレードせずに解決策はここにある: Emulating TO_SECONDS() in older versions of MySQL (<5.5.0)

+0

しかし、TO_SECONDSとTIME_TO_SECはまったく異なります。しかし、古いクエリはWindows上で実行されていて、Linuxでは機能が終了しないとは言いませんでした。だから、私もそれがバージョンの問題だと思う。 私はそれを得ました、私は少し質問を変更しました。 $ sql = mysql_query( "SELECT COUNT(*)FROM tlb_users WHERE TIME_TO_SEC(TIMEDIFF(NOW()、TS))<= 604800"); – RIK

0

MySQLは大文字と小文字が区別され、それはLinux上で実行される場合、およびWindows上で実行されないとき(時には?)。おそらくTSは別のケースですか?

私は完全に間違っているかもしれませんが、これはテーブル名にしか影響しないかもしれませんが、以前この問題が発生しています。

関連する問題