Help us understand the problem. What is going on with this article?

Node.js+Express4+MySQLでtimestampデータがUTCで取得される

More than 3 years have passed since last update.

環境と事象はタイトルの通り

ググったら答えが見つかった
http://stackoverflow.com/questions/23571110/nodejs-responded-mysql-timezone-is-different-when-i-fetch-directly-from-mysql

Node.jsでMySQLを使うときに

//注意:テキトー
Config = require('config');
mysql = require('mysql');

var conn = mysql.createConnection({
    host: Config.mysql.host,
    user: Config.mysql.user,
    password: Config.mysql.pass,
    database: Config.mysql.dbname,
    timezone: 'jst' //timezoneの指定省略の場合はシステムローカルになる
});

みたいな感じでコネクションオブジェクト生成するけど、その際にtimezoneの指定がないとデフォルトのUTCになる。まぁ当たり前なんですけど。
[訂正] 失礼しました。timezoneの指定を省略した場合はシステムローカルでした。
[参照] https://www.npmjs.com/package/mysql

なのでちゃんとtimezoneを日本時間に設定しておかないと、日本時間のデータを挿入したのに読み出すと元データ(MySQLに格納されたデータ)をUTCの時間と認識して日本時間へと時差計算した値が表示されることになる。

[追記]システムローカル、MySQLのtimezoneが揃っていれば基本的には気にならないはず。おかしい場合は挿入前や表示前など日付データを扱う際にnew Date(日付データ)すると再度システムローカルの日付データに変換される。

雑な感じですが、そんなポカを私はやらかしました。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした