2017-02-25 66 views
1

我正在尝试创建一个活动日历。所有日期都正常,但任何一个月的第一个月都成为上个月的最后一个月。这里是我的MySQL查询 -Mysql FROM_UNIXTIME将第一个3月转换为2月28日

查询1

$sql = "select DATE_FORMAT(FROM_UNIXTIME(post_date), '%Y') as mnth, 
       DATE_FORMAT(FROM_UNIXTIME(post_date), '%M') as yr 
     from ".EVENT." 
     GROUP BY (DATE_FORMAT(FROM_UNIXTIME(post_date), '%M %Y')) 
     ORDER BY(post_date) ASC limit $offset ,$limit"; 

在环 -

$loop="SELECT * 
     FROM ".EVENT." 
     WHERE event_status='1' 
      AND DATE_FORMAT(FROM_UNIXTIME(post_date), '%Y')=".$result['mnth']." 
      AND DATE_FORMAT(FROM_UNIXTIME(post_date), '%M')='".$result['yr']."' 
     ORDER BY(post_date) ASC" ; 
+0

您不应该在间接存储的时间戳列上使用'FROM_UNIXTIME'。 MySQL知道如何处理它们。 'FROM_TIMESTAMP'可能有服务器时区相关的问题。 – apokryfos

+0

感谢您的快速回复。我如何更改服务器时区? –

+0

你不应该这样做。删除'FROM_UNIXTIME'有助于解决问题吗? – apokryfos

回答

0

通过检查MySQL的集时区我发现它在MST设置和我所有存储日期UTC格式。为了解决这个问题,我只是将我的默认时区UTC转换为MST,并解决了我的问题。

相关问题