MySQL中的sequelize.js TIMESTAMP而不是DATETIME

MySQL中的sequelize.js TIMESTAMP而不是DATETIME

在MySQL数据库中,时间类型有两种常见的类型,即TIMESTAMP和DATETIME。至于选择哪种类型,取决于您的预期用途和用例。有时,您会遇到需要更好的性能和更少的存储空间的一些需求。这就是TIMESTAMP类型可以派上用场的地方。

阅读更多:MySQL 教程

TIMESTAMP vs. DATETIME

在MySQL中,DATETIME类型与TIMESTAMP类型非常相似,但有一些主要差别。首先,DATETIME需要8个字节的存储空间,而TIMESTAMP只需要4个字节。意味着可以在使用TIMESTAMP的同时保存更多的数据。此外,TIMESTAMP类型可以存储的范围比DATETIME类型窄,TIMESTAMP类型只能存储1970年到2038年之间的日期和时间。

在实践中,TIMESTAMP类型通常用于跟踪记录的修改时间,例如一个项目的最后修改时间,或者保留某个评论的发表时间。此外,TIMESTAMP类型允许您使用MySQL的内置函数来进行日期和时间计算和比较。

使用sequelize.js将属性设置为TIMESTAMP

当您在使用sequelize.js和MySQL数据库时,您需要明确指定属性类型。在本例中,为了将属性设置为TIMESTAMP类型,需要做以下更改:

const { Sequelize, DataTypes } = require('sequelize');
const sequelize = new Sequelize('database', 'username', 'password', {
  host: 'localhost',
  dialect: 'mysql',
});

const MyModel = sequelize.define('MyModel', {
  property: {
    type: DataTypes.TIMESTAMP,
    allowNull: false,
    defaultValue: DataTypes.NOW,
  },
});
JavaScript

在上面的代码示例中,通过运用sequelize.js的DataTypes,将属性类型传递为TIMESTAMP。

TIMESTAMP类型的一些问题

虽然TIMESTAMP比DATETIME更轻便,但是您需要注意的是,TIMESTAMP可能具有UNIX时间戳的限制。如果您需要放置范围超出UNIX时间戳范围的日期和时间,那么DATETIME在这种情况下可能是更好的选择。

此外,就表单输入而言,日期和时间输入不够友好。通常为了向用户和应用程序开发人员提供方便,使用格式掩码和控件来强制指定使用正确的日期和时间格式。如果用户手动输入日期和时间,则需要在后台代码中执行更多的格式转换操作。

无论哪种类型,您的数据访问程序都必须考虑如何将TIMESTAMP或DATETIME值的日期和时间处理转换为人类可读格式。

总结

在MySQL数据库中,TIMESTAMP比DATETIME更轻便,需要的存储空间和所需索引的大小要小得多。在sequelize.js中,默认情况下设置属性数据类型为DATETIME,如果需要设置为TIMESTAMP,只需更改数据类型即可。但是,需要注意的是,如果需要超出UNIX时间戳的时间范围,那么DATETIME可能是比TIMESTAMP更好的选择。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册