0

JavaScript を使用してタイムスタンプでクエリを実行する SQL ステートメントを実行したいと考えています。

タイムスタンプを設定する方法は次のとおりです。

var startTime = new Date(year, month, day, 0, 0);
var endTime = new Date(year, month, day, 23, 59);

私のSQL文は次のとおりです。

'SELECT * FROM proximate.user WHERE join_timestamp >= $1 ' +
'AND join_timestamp<=$2 ORDER BY user_id ASC';

$1 は startTime で、$2 は endTime です。startTime がSat Dec 01 2012 00:00:00 GMT+0800 (SGT)で endTime がSat Dec 01 2012 23:59:00 GMT+0800 (SGT)の場合、実行されたステートメントは startTime の 1 日前のタイムスタンプを含む結果を返します。

誰でも理由がわかりますか?

前もって感謝します。

4

1 に答える 1

1

私の推測では、適切な結果が得られますが、返された結果セットのタイムスタンプ列を GMT+8 に変換するのを忘れていると思います: "Sat Dec 01 2012 00:00:00 GMT+0800" = Fri Nov 30 2012 16:00:00 UTC".オプション - UTC で日付を渡します。実際には、何を取得したいかによって異なります: 12 月 1 日 GMT+8 に参加したすべてのユーザーが必要な場合は、結果セットを変換する必要があります。12 月 1 日 UTC に参加したユーザーが必要な場合は、UTC を渡します。日付:"2012 年 12 月 1 日土曜日 00:00:00 UTC"

于 2012-12-09T16:04:24.090 に答える