【momentjs】Sequelizeのtimezoneを設定する方法【時間ずれる】

SequelizeとExpressでwebアプリケーションを作成しているときに、momentjsで現在時刻を指定して、MySQLからSELECTするときに、時刻がずれるという現象が起こったので、その解消法を紹介します!

実行したソース

上記のソースが問題になったソースです。

  • momentjsにて、TimeZoneをJSTに指定して、現在時刻を取得
  • Sequalizeのwhere文にその時刻を取得
  • 渡した文字列は6月14日だが、sqlは6月13日で実行される

原因

原因は、SequelizeがUTCタイムでSQLを発行してしまうことでした。

対応

対応方法は、Sequelizeの設定ファイルにTIMEZONEの設定を加えて、JSTタイムで実行するように命令するだけです。

DBの設定をするconfigファイルに上記のようにtimezoneを追加すれば、SequelizeがJSTタイムでクエリを実行するようになるので、解決します!

ABOUTこの記事をかいた人

新卒でノマドワーカー(webデザイナー)として独立し、半年で月収100万円を達成する。その後、事務所を売却(バイアウト)したり、Youtuber(最高月間視聴回数109万回、チャンネル登録者1万人)をしたり、Openrecの公式配信者としてゲーム生実況をしたり、ベンチャー企業のCOOをしたり、パラレルキャリアを歩んできました。 2019年にミニマムライフコストを不労所得で稼げるようになったため、いまは、お金のことを考えずに、様々な企業でエンジニア修行をさせていただきながら、複数のメディアやアプリとweb制作事務所を運営しています。 趣味は株式投資(米国・日本株メイン)で、トレードを楽しむ日も多いです!