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

如何在Express.js+MySQL中正确获取日期?日期显示异常求助

解决MySQL日期获取时区偏移问题

你遇到的是时区不匹配导致的日期显示异常:MySQL存储的2003-10-20本质是UTC时区的零点时间,而你的运行环境时区比UTC晚3小时(比如UTC-3时区),转换后就变成了2003-10-19 21:00:00,打印时只展示到小时部分就出现了2003-10-19T21的结果。

以下是几种直接有效的解决方法:

  • 方案一:数据库连接时指定时区
    在创建MySQL连接时,添加时区配置,强制连接使用与数据库存储一致的时区(比如UTC):

    const server = mysql.createConnection({
      host: '你的数据库地址',
      user: '用户名',
      password: '密码',
      database: '数据库名',
      timezone: 'UTC' // 或设置为你需要的目标时区,例如'+08:00'代表东八区
    });
    
  • 方案二:查询时直接格式化日期
    修改SQL语句,用DATE_FORMAT函数直接将日期转为YYYY-MM-DD格式的字符串,避免时区自动转换:

    SELECT DATE_FORMAT(DOB_value, '%Y-%m-%d') AS DOB_value FROM users WHERE Name_value='resname';
    

    这样查询结果直接是字符串2003-10-20,不会出现时区偏移问题。

  • 方案三:代码中手动格式化日期
    如果不想改动连接或SQL,可以在获取结果后,将Date对象格式化为目标字符串:

    const rawDob = dob_result[0].DOB_value;
    // 转换为YYYY-MM-DD格式的字符串
    const formattedDob = rawDob.toISOString().split('T')[0];
    console.log(formattedDob); // 输出2003-10-20
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 23:05:17