Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在sequelize标准createdAt字段中使用毫秒?_Javascript_Mysql_Node.js_Datetime_Milliseconds - Fatal编程技术网

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

Javascript 如何在sequelize标准createdAt字段中使用毫秒?,javascript,mysql,node.js,datetime,milliseconds,Javascript,Mysql,Node.js,Datetime,Milliseconds,在Nodejs应用程序中,我使用将记录写入mysql数据库。默认情况下,每个表都有一个createdAt字段,但该字段仅记录以秒为单位的日期时间: mysql> SELECT createdAt FROM ticks LIMIT 3; +---------------------+ | createdAt | +---------------------+ | 2017-11-08 16:34:21 | | 2017-11-08 16:34:15 | | 2017-11

在Nodejs应用程序中,我使用将记录写入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)
因为我正在运行一个非常时间敏感的服务,所以我也想记录毫秒。其中包括:

Sequelize.DATE(6)  // DATETIME(6) for mysql 5.6.4+. Fractional seconds support with up to 6 digits of precision
但是我从来没有显式地写过createdAt字段(Sequelize会自动地写),所以我不确定如何才能使该写操作以毫秒为单位


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

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

id: {
    type: Sequlieze.INTEGER(11).UNSIGNED,
    autoIncrement: true,
    primaryKey: true
},
...
...
createdAt: {
    type: schema.DATE(6),
    allowNull: true,
    defaultValue: Sequelize.fn('NOW')
}
或将其重命名为:

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

我更新了模型并创建了迁移以利用毫秒:

型号:

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个)