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

如何在JavaScript中将Timestamp转换为MySQL DateTime格式

解决方案

你手里的13位数字是毫秒级Unix时间戳,和Java里System.currentTimeMillis()返回的格式完全一致,Node.js中可通过以下几种方式转换为MySQL支持的YYYY-MM-DD HH:mm:ss DateTime格式:

1. 原生JS实现(无需第三方依赖)

const timestamp = 1631514003973;
const date = new Date(timestamp);

// 补零工具函数
const pad = (num) => num.toString().padStart(2, '0');

// 生成当前时区的DateTime
const mysqlDateTime = `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())} ${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}`;

// 如果需要生成UTC时区的DateTime,替换为以下方法
// const mysqlDateTime = `${date.getUTCFullYear()}-${pad(date.getUTCMonth() + 1)}-${pad(date.getUTCDate())} ${pad(date.getUTCHours())}:${pad(date.getUTCMinutes())}:${pad(date.getUTCSeconds())}`;

2. 用轻量时间库dayjs实现(代码更简洁)

先安装依赖:npm install dayjs

const dayjs = require('dayjs');
const timestamp = 1631514003973;

// 当前时区DateTime
const mysqlDateTime = dayjs(timestamp).format('YYYY-MM-DD HH:mm:ss');

// UTC时区DateTime
// const mysqlDateTime = dayjs(timestamp).utc().format('YYYY-MM-DD HH:mm:ss');

3. 直接传Date对象给MySQL驱动(推荐)

如果你用的是mysql/mysql2这类Node.js MySQL驱动,不需要手动转换格式,直接把Date对象作为查询参数传入即可,驱动会自动完成适配:

const [result] = await connection.execute(
  'INSERT INTO 表名 (时间字段名) VALUES (?)',
  [new Date(1631514003973)]
);

注意事项

  • 不要把毫秒级时间戳除以1000转成秒级再传入Date构造器,JS的Date和Java一致,默认接受毫秒级时间戳作为入参,做除法会导致时间完全错误。
  • 业务中如果有跨时区需求,统一使用UTC时间做存储和传输,避免时区偏差导致的数据错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 11:30:00