Sequelize 是一个 Node.js 中的 ORM (Object-Relational Mapping)框架,用于操作与 MySQL、PostgreSQL、SQLite 和 MSSQL 等数据库交互的 JavaScript 对象。它提供了方便的模型定义、关联模型、事务、查询构造器和数据验证等功能。本文将介绍 Sequelize 中如何使用日期类型。
Sequelize 中的日期类型
Sequelize 提供了两种日期类型:DATE
和 DATEONLY
。其中,DATE
存储日期和时间,包括年月日、时分秒;DATEONLY
存储日期,只包括年月日。在 Sequelize 中定义日期类型的方式如下:
// javascriptcn.com 代码示例 const Sequelize = require('sequelize'); const sequelize = new Sequelize('database', 'username', 'password', { dialect: 'mysql', host: 'localhost' }); const Model = Sequelize.Model; class User extends Model {} User.init({ birthdate: { type: Sequelize.DATE, allowNull: false }, hiredate: { type: Sequelize.DATEONLY, allowNull: false } }, { sequelize, modelName: 'user' });
如上述代码所示,在模型定义中直接使用 Sequelize.DATE
或 Sequelize.DATEONLY
即可定义对应的日期类型字段,同时需要指定日期字段是否允许为 null
。
Sequelize 中的日期格式化
在 Sequelize 中,日期类型的值可以是一个 JavaScript Date 对象、一个 UNIX 时间戳(以秒为单位)、一个 ISO 8601 字符串或一个字符串。其中,使用字符串时,需要指定日期格式,可以使用 Moment.js 库进行格式化。以下是在 Sequelize 模型中使用 Moment.js 进行日期格式化的示例代码:
const moment = require('moment'); ... User.create({ birthdate: moment('2000-01-01', 'YYYY-MM-DD').toDate(), hiredate: moment().format('YYYY-MM-DD') });
如上述代码所示,可以使用 Moment.js 的 toDate()
方法将格式化后的日期转换为 JavaScript Date 对象,或使用 format()
方法将日期格式化为指定格式的字符串。
Sequelize 中的日期查询
Sequelize 提供了一些内置的日期查询方法,可以对日期类型字段进行查询。以下是一些常用的日期查询方法示例:
// javascriptcn.com 代码示例 // 查找 hiredate 在 2021-01-01 至 2021-02-01 之间的用户 User.findAll({ where: { hiredate: { [Sequelize.Op.between]: ['2021-01-01', '2021-02-01'] } } }); // 查找 birthdate 在 2000-01-01 之前的用户 User.findAll({ where: { birthdate: { [Sequelize.Op.lt]: '2000-01-01' } } });
如上述代码所示,可以通过在查询条件中使用 Date 对象、ISO 8601 字符串或 Moment.js 格式化后的字符串来进行日期范围查询、时间戳和日期大小比较。
总结
使用 Sequelize 中的日期类型、日期格式化和日期查询可以方便快捷地操作数据库中的日期字段。在定义模型时,需要选择对应的日期类型并注意是否允许为 null
。在进行日期格式化时,可以使用 Moment.js 库进行灵活的格式化。在进行日期查询时,可以使用 Sequelize 提供的内置查询方法按照日期范围、时间戳、日期大小比较等方式进行查询。
希望本文对你学习 Sequelize 中的日期类型有所帮助,也欢迎大家在评论区留言交流。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/652f976c7d4982a6eb0c231d