MySQL数据库版本为5.5.62,时间戳超出2038年1月19日的解决方案

文章讲述了在MySQL5.5.62中,当使用FROM_UNIXTIME()函数处理超出有效范围(1970-2038)的时间戳时返回NULL的问题。提供了JavaScript和PHP封装函数作为解决方法,以正确格式化时间戳。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MySQL数据库版本是 5.5.62,已设置字段的类型为BIGINT,使用FROM_UNIXTIME()函数来转换时间戳,返回NULL。

SELECT FROM_UNIXTIME(1617970800)

在这里插入图片描述

SELECT FROM_UNIXTIME(2185743121)

在这里插入图片描述
MySQL数据库版本为5.5.62,已设置字段的类型为BIGINT,并使用FROM_UNIXTIME()函数来转换戳,但返回了NULL。这可能是由于以下原因导致的:

  1. 时间戳超出了FROM_UNIXTIME()函数的有效范围。在MySQL 5.5版本中,时间戳的有效范围是从1970年1月1日到2038年1月19日。如果时间戳超出了这个范围,转换函数将返回NULL。

  2. 时间戳的值为0或负数。FROM_UNIXTIME()函数要求时间戳为正整数,如果时间戳的值为0或负数,转换函数也会返回NULL。

  3. 字段的值为NULL。如果字段本身的值为NULL,无论使用什么函数进行转换,结果都将返回NULL。

解决方案()

1.javascript封装函数

function convertUnixTimestampToDate(timestamp) {  
    // 创建一个新的Date对象,传入UNIX时间戳(毫秒)  
    var date = new Date(timestamp * 1000); // UNIX时间戳通常是秒,而JavaScript的Date需要毫秒  
      
    // 格式化日期和时间  
    var year = date.getFullYear();  
    var month = String(date.getMonth() + 1).padStart(2, '0'); // 月份是从0开始的,所以需要+1,并用0填充  
    var day = String(date.getDate()).padStart(2, '0'); // 用0填充日期  
    var hours = String(date.getHours()).padStart(2, '0'); // 用0填充小时  
    var minutes = String(date.getMinutes()).padStart(2, '0'); // 用0填充分钟  
    var seconds = String(date.getSeconds()).padStart(2, '0'); // 用0填充秒  
      
    // 组合成完整的日期时间字符串  
    var formattedDate = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;  
      
    return formattedDate;  
}  
  
// 使用函数转换时间戳  
var timestamp = 2185741960;  
var formattedTime = convertUnixTimestampToDate(timestamp);  
console.log(formattedTime); // 输出转换后的日期时间字符串

2.php封装函数

function convertUnixTimestampToDate($timestamp, $format = 'Y-m-d H:i:s') {  
    // 使用date函数将UNIX时间戳转换为指定格式的日期时间字符串  
    $date = date($format, $timestamp);  
    return $date;  
}  
  
// 使用函数转换时间戳  
$timestamp = 2185741960;  
$formattedTime = convertUnixTimestampToDate($timestamp);  
echo $formattedTime; // 输出转换后的日期时间字符串

@漏刻有时

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

漏刻有时

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值