【发布时间】:2017-02-25 19:16:32
【问题描述】:
我正在尝试创建活动日历。所有日期都工作正常,但任何一个月的第一天都变成了上个月的最后一天。这是我的 Mysql 查询 -
查询 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" ;
【问题讨论】:
-
您不应在内部存储的时间戳列上使用
FROM_UNIXTIME。 MySQL 知道如何处理它们。FROM_TIMESTAMP可能存在与服务器时区相关的问题。 -
感谢您的快速回复。如何更改服务器时区??
-
您不需要这样做。删除
FROM_UNIXTIME是否有助于解决问题? -
实际上我使用 strtotime 从 php 代码中存储了日期时间。这会是个问题吗?
-
好吧
strtotime返回自 1/1/1970 00:00:00 UTC 以来经过的秒数(因此没有时区问题),但是它假定输入与默认的 PHP 时区(不是服务器时间)匹配,所以调用时要小心。
标签: php mysql unix-timestamp