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; // 输出转换后的日期时间字符串

@漏刻有时

Logo

一站式 AI 云服务平台

更多推荐