在MySQL中,保存unix_timestamp
值时应该使用哪种数据类型?
在MySQL中,保存unix_timestamp
值时应该使用哪种数据类型?
类型为整数,如:
int(11)
适用于索引和类似 > < =
的条件。
int(11)
中的11增加到12或13是否是避免该情况的合理措施? - Brad Hein您想使用TIMESTAMP数据类型。它以时代值的形式存储,但MySQL将该值显示为“YYYY-MM-DD HH:MM:SS”。
Unix TIMESTAMP 是自 1970-01-01
以来的秒数。如果您想将 Unix 时间戳存储在 mysql
数据库中,则应使用带有属性 UNSIGNED
(仅允许正数)的 int(11)
,如果要保存微秒数,则应使用 bigint(20)
。
如果您想在选择查询中以可读格式获取 unixtimestamp
,可以使用:
SELECT FROM_UNIXTIME(CAST(yourtable.start_time as UNSIGNED)) as date_time
如果您使用 php
,则可以使用:
$unixtimestamp= time();//1544619186
echo(date("Y-m-d", $unixtimestamp));//2018-12-12
function timeConverter(UNIX_timestamp){
var date = new Date(UNIX_timestamp*1000);
var year = date.getFullYear();
var month = ("0"+(date.getMonth()+1)).substr(-2);
var day = ("0"+date.getDate()).substr(-2);
var hour = ("0"+date.getHours()).substr(-2);
var minutes = ("0"+date.getMinutes()).substr(-2);
var seconds = ("0"+date.getSeconds()).substr(-2);
return year+"-"+month+"-"+day+" "+hour+":"+minutes+":"+seconds;
}
console.log(timeConverter(value));// 2018-14-12 13:11:33
在这种情况下,服务器应该按照原样返回unix时间戳:
SELECT yourtable.start_time as date_time
BIGINT UNSIGNED NOT NULL
以秒为单位的时代表示可以适合于INT(11)
如果时间戳有毫秒,则可以使用INT(20)
。