在 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)
由于我正在运行一个对时间非常敏感的服务,我还想记录毫秒。在 docs I found the data types ,其中包括:
Sequelize.DATE(6) // DATETIME(6) for mysql 5.6.4+. Fractional seconds support with up to 6 digits of precision
尽管如此,我从来没有显式地写入createdAt字段(Sequelize会自动执行此操作),所以我不确定如何才能使其写入毫秒。
有人能给我指出正确的方向,以使用毫秒精度保存带有createdAt字段的记录吗?欢迎所有提示!
最佳答案
我更新了模型并创建了一个迁移以利用毫秒:
型号:
import Sequelize from 'sequelize'
class Ticks extends db.instance.Model {
static init(sequelize) {
return super.init({
.
.
createdAt: {
allowNull: false,
type: Sequelize.DATE(6)
}
})
}
}
迁移:
export default {
up: (queryInterface, Sequelize) => queryInterface
.changeColumn('ticks', 'createdAt', {
allowNull: false,
type: Sequelize.DATE(6)
}),
down: (queryInterface, Sequelize) => queryInterface
.changeColumn('ticks', 'createdAt', {
allowNull: false,
type: Sequelize.DATE
})
}
(使用ES6语法)
通过这些更改,我能够以毫秒为单位工作(尽管似乎只有 3 个位置,即使我指定了 6 个位置)
关于javascript - 如何在sequelize标准createdAt字段中使用毫秒?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47752672/