将服务器MySQL TimeStamp转换为UTC

时间:2011-02-24 12:51:07

标签: php mysql

我一直在使用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”

3 个答案:

答案 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进行存储。

以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?