本文主要是介绍MySQL数据库版本为5.5.62,时间戳超出2038年1月19日的解决方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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; // 输出转换后的日期时间字符串
@漏刻有时
这篇关于MySQL数据库版本为5.5.62,时间戳超出2038年1月19日的解决方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!