You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Sequelize中DataTypes.NOW函数无法生成时间戳的技术问题

解决Sequelize中DataTypes.NOW无法生成时间戳的问题

嘿,我来帮你搞定这个问题!你现在的代码里犯了一个常见的小误区:DataTypes.NOW并不是用来直接生成当前时间戳的函数,它本质上是Sequelize用来定义数据库字段默认值的一个类型标记对象,直接打印它肯定得不到你想要的时间字符串。

问题根源

你这段代码:

let time = db.Sequelize.DataTypes.NOW;
console.log('generated time is' + time);

其实只是把Sequelize内置的一个字段配置对象赋值给了time变量,它的作用是告诉数据库“这个字段的默认值取当前时间”,而不是在JS层面生成时间。

正确的做法分三种场景:

1. 直接在JS层面获取当前时间/时间戳

如果只是想在代码里拿到当前时间,完全不用Sequelize,用JavaScript原生API就行:

// 获取可读的时间字符串
let time = new Date();
console.log('generated time is', time);

// 获取毫秒级时间戳
let timestamp = Date.now();
console.log('generated timestamp is', timestamp);

2. 在Sequelize模型中设置字段默认值为当前时间

这才是DataTypes.NOW的正确使用场景——让数据库自动给字段赋当前时间作为默认值:

// 假设你定义一个User模型
const User = sequelize.define('User', {
  createdAt: {
    type: db.Sequelize.DATE,
    defaultValue: db.Sequelize.DataTypes.NOW // 这里生效,插入数据时数据库自动填当前时间
  }
});

3. 在Sequelize查询中使用数据库层面的当前时间

如果需要在查询(比如更新、插入)中调用数据库的当前时间函数,要用Sequelize.fn('now'):

// 示例:更新用户的最后登录时间为当前时间
await User.update(
  { lastLogin: db.sequelize.fn('now') },
  { where: { id: 123 } }
);

这样就能根据你的实际需求正确获取或设置时间啦!

内容的提问来源于stack exchange,提问作者Mrugesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:03:38