如何在sequelize标准createdAt字段中使用毫秒?

kra*_*r65 6 javascript mysql datetime milliseconds node.js

在 Nodejs 应用程序中,我使用Sequelize ORM将记录写入 mysql 数据库。默认情况下,每个表都有一个createdAt字段,但它只记录带秒的日期时间:

mysql> SELECT createdAt FROM ticks LIMIT 3;
+---------------------+
| createdAt           |
+---------------------+
| 2017-11-08 16:34:21 |
| 2017-11-08 16:34:15 |
| 2017-11-08 16:34:27 |
+---------------------+
3 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

由于我正在运行一个对时间非常敏感的服务,我还想记录毫秒。在文档中我找到了数据类型,其中包括:

Sequelize.DATE(6)  // DATETIME(6) for mysql 5.6.4+. Fractional seconds support with up to 6 digits of precision
Run Code Online (Sandbox Code Playgroud)

不过,我从来没有显式地写入createdAt字段(Sequelize会自动执行此操作),所以我不确定如何才能使其写入毫秒。

有人能给我指出正确的方向,以使用毫秒精度使用createdAt字段保存记录吗?欢迎所有提示!

Yu-*_*hen 1

您可以createdAt在模型中明确定义,例如:

id: {
    type: Sequlieze.INTEGER(11).UNSIGNED,
    autoIncrement: true,
    primaryKey: true
},
...
...
createdAt: {
    type: schema.DATE(6),
    allowNull: true,
    defaultValue: Sequelize.fn('NOW')
}
Run Code Online (Sandbox Code Playgroud)

或者通过以下方式重命名:

created_ts: {
    type: schema.DATE(6),
    allowNull: true,
    defaultValue: Sequelize.fn('NOW')
}, {
    createdAt: created_ts
}
Run Code Online (Sandbox Code Playgroud)