2016-09-18 5 views
0

15分以内に開始するすべてのセッションリストを取得しようとしています。問題は、クライアントとサーバーのタイムゾーンとコンバージョンにあります。これまでのところ私はこのコードを持っています。すべてのセッションを開始時刻の15分前に取得する

MySQLサーバは別のマシンにあり、クライアント(nodejsサーバ)は別のマシン上で実行されています。

sql = 'SELECT * FROM sessions 
WHERE FROM_UNIXTIME(?) BETWEEN SUBTIME(session.start, "0:15:0") AND session.start' 

values = [Math.round(Date.now()/1000)] // convert milliseconds to seconds 
+0

提供された 'session.start'はあなたがそれを照会するのと同じ方法で設定されました。必要なものを手に入れなければなりません。一貫性のあるアプリケーションにするには、Mysqlサーバーのクロックを使用しないでください。いいえ '..set session.start = now()'か何か。 – Serg

答えて

0

私はこのような何かを期待している:betweenは、第1の比較値は秒未満であることを期待するので、あなたのクエリは動作しません

select s.* 
from sessions s 
where s.start >= now() and s.start <= date_add(now(), interval 15 minute); 

一つの理由です。

+0

クエリのおかげで、2番目の問題は、mysqlが別のタイムゾーンで実行されていることです。mysqlをマイアミやcalifroniaタイムゾーンで動作させる方法は、 'timezone'接続文字列 –

+0

@iPhoneDeveloperと関係します。 。 。これは、時刻がデータベースにどのように格納されたかによっても異なります - 現地時間またはデータベース時間を使用します。 –

+0

セッションの正確な時刻ごとに現地時間として保存し、「dateStrings」を使用して:「true」 'クライアント表示の設定を接続します。すなわち変換なし –

関連する問題