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

标签 javascript mysql node.js datetime milliseconds

在 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/

相关文章:

javascript - 奇怪的 jQuery 错误 .children(...).attr(...).change 不是一个函数?

javascript - 如何在不安装的情况下使用 npm 软件包二进制文件

javascript - 自动提取的 YouTube 视频无法加载到精美的盒子中

php - 查询 PHP/MySql 和/或进行高级搜索

javascript - Jest 测试 promise 解析和事件循环 tick

javascript - 将 JSON 字符串转换为另一种格式

"SELECT * FROM System"的 MySQL 语法错误 1064

mysql - SQL 将行转换为列,无需聚合或透视

node.js - 在 Nx 工作区中运行 NestJS 构建工件时出错

node.js - 如何获取 "npm run <script>"中的文件列表并将其通过管道传输到另一个脚本?