我一直在使用timeago插件(http://timeago.yarp.com/),它在我的localhost上工作正常,它的MySQL将其数据存储在UTC时间戳中,插件需要工作
但是,将项目上传到服务器时,MySQL数据库中会出现不同类型的时间戳。我从服务器得到这样的时间戳:“2011年2月24日星期四下午4:29”,而我需要这样的东西:“2008-07-17T09:24:17Z”
知道如何使用php转换时间戳吗?
编辑:数据库中以错误格式存储的时间戳由mysql自动生成。
编辑2:这是一个“timestamp”类型的字段,当在db中插入行时默认设置为“CURRENT_TIMESTAMP”
答案 0 :(得分:3)
SELECT UNIX_TIMESTAMP('your_date') AS your_date;
和
php中的$date('whatever_format', $timestamp_from_mysql);
答案 1 :(得分:2)
你得到一个奇怪的MySQL字符串,你确定它在Datetime字段吗?
您可以使用以下function从MySQL获取UNIX时间戳(自纪元以来的秒数),此格式在多个平台上被广泛接受:
SELECT UNIX_TIMESTAMP( table.datetime_field ) as datetime_field FROM table
使用某些PHP Functions,您可以将其转换为您想要的格式:
echo date( 'c', $record[ 'datetime_field' ] );
我认为这对你的问题已经足够了。
答案 2 :(得分:1)
内部[MySQL时间戳列] [1]存储为[UTC] [2],但在选择日期时,MySQL会自动将其转换为当前会话时区。
存储日期时,MySQL会假设日期在当前会话时区,并将其转换为UTC进行存储。
无论当前MySQL会话在什么时区:
SELECT
CONVERT_TZ(`timestamp_field`, @@session.time_zone, '+00:00') AS `utc_datetime`
FROM `table_name`
您还可以将服务器或全局或当前会话时区设置为UTC,然后选择时间戳,如下所示:
SELECT `timestamp_field` FROM `table_name`
我在这里制作了一张备忘单:Should MySQL have its timezone set to UTC?