MySQL server 的时区不一定和 Nodejs App 一样,不确定用哪种类型存储时间。 StackOverflow 上高票赞同 TIMESTAMP,但如果 App 和 MySQL 时区不一样,手动插入时间时会引起混乱:
// Node App 时区 +0800
// MySQL server 时区 UTC
const mysql = require('mysql');
const connection = mysql.createConnection();
const createdAt = new Date();
connection.query('INSERT INTO user(created_time) VALUES(?)', createdAt); // +0800
// connection.query('INSERT INTO user(created_time) VALUES(now())'); // +0000
如果有人通过 js new Date() 获取本地东8区时间,有人用 SQL函数 now() 获取0时区时间,就会导致混乱。 大家觉得用什么好?