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

MySQL中FROM_UNIXTIME()函数失效求助:时间戳转日期返回NULL

解决Unix毫秒时间戳转指定日期格式的问题

我来帮你搞定这个问题~你遇到的FROM_UNIXTIME()返回NULL的情况,主要有两个核心原因:

  • 你的date_dt字段是varchar字符串类型,而FROM_UNIXTIME()需要接收数值类型的时间戳参数
  • 存储的是毫秒级时间戳(比如1518783503000),但FROM_UNIXTIME()默认只处理秒级时间戳

解决方案

你需要先把字符串转成数值,再将毫秒时间戳转换为秒级,最后用格式符指定你想要的Fri Feb 16 2018格式,具体SQL语句如下:

SELECT FROM_UNIXTIME(CAST(date_dt AS UNSIGNED) / 1000, '%a %b %d %Y') AS date_formatted 
FROM alert_log;

语句拆解说明

  • CAST(date_dt AS UNSIGNED):将varchar类型的时间戳转换为无符号整数,避免字符串运算导致的解析错误
  • / 1000:把毫秒级时间戳转换为秒级,匹配FROM_UNIXTIME()的参数要求
  • '%a %b %d %Y':格式符对应含义:
    • %a:缩写的星期名称(如Fri)
    • %b:缩写的月份名称(如Feb)
    • %d:两位数字的日期(如16)
    • %Y:四位数字的年份(如2018)

测试验证

用你给出的示例时间戳单独测试:

SELECT FROM_UNIXTIME(1518783503000 / 1000, '%a %b %d %Y');

执行后会返回:Fri Feb 16 2018,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:34:03