Node.js、Postgres、およびnode-postgresライブラリを使用しています。次のようなコードを使用して、現在の日付で新しいレコードを挿入しようとすると:
client.query('INSERT INTO ideas(date) VALUES($1)', [new Date()], ...);
そして、これはエラーなしで正常に実行されます。ただし、データベースに対して select ステートメントを実行して結果をログに記録すると、指定された日付は次のように表示されます。
Wed Nov 20 2013 19:00:00 GMT-0500 (EST)
これは問題ありませんが、レコードを挿入したときは 11 月 21 日木曜日でした。また、時間は、出力が示すように 7:00 ではなく、5:47 でした。
コードをさらに数回実行したところ、時間に関係なく同じ不正確な日付が保存され、次の時間が始まった後でも同じでした。これにより、何らかの理由で、時間や分ではなく日付のみが保存されていると思われます。さらに、日付が 1 日しかずれていないという事実は、node-postgres が日付を処理する方法に問題がある可能性があることを示唆しています。
クエリに渡すときに Javascript が現在の日付を計算しても問題ないことはわかっています。ログに記録new Date()
したところ、日付、分、時間、秒まで正確だったからです。
この問題に関するヘルプをいただければ幸いです。ありがとう!