MySQL数据库版本是 5.5.62,已设置字段的类型为BIGINT,使用FROM_UNIXTIME()函数来转换时间戳,返回NULL。
SELECT FROM_UNIXTIME(1617970800)
SELECT FROM_UNIXTIME(2185743121)
MySQL数据库版本为5.5.62,已设置字段的类型为BIGINT,并使用FROM_UNIXTIME()函数来转换戳,但返回了NULL。这可能是由于以下原因导致的:
-
时间戳超出了FROM_UNIXTIME()函数的有效范围。在MySQL 5.5版本中,时间戳的有效范围是从1970年1月1日到2038年1月19日。如果时间戳超出了这个范围,转换函数将返回NULL。
-
时间戳的值为0或负数。FROM_UNIXTIME()函数要求时间戳为正整数,如果时间戳的值为0或负数,转换函数也会返回NULL。
-
字段的值为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; // 输出转换后的日期时间字符串
@漏刻有时