我正在修改使用常量SERVER_TIMEZONE_OFFSET
的现有应用程序。我之前从未遇到过这种情况,而且我可以获得最接近的搜索结果' SERVER_TIMEZONE_OFFSET'在timezone_offset_get()
函数
以下是使用了“SERVER_TIMEZONE_OFFSET”的查询示例
$sql = "select s.weekNum, count(s.gameID) as gamesTotal,";
$sql .= " min(gameDateTime) as firstGameTime,";
$sql .= " (select gameDateTime from schedule where weekNum = s.weekNum and DATE_FORMAT(gameDateTime, '%W') = 'Thursday' order by gameDateTime limit 1) as cutoffTime,";
$sql .= " (DATE_ADD(NOW(), INTERVAL " . SERVER_TIMEZONE_OFFSET . " HOUR) > (select gameDateTime from schedule where weekNum = s.weekNum and DATE_FORMAT(gameDateTime, '%W') = 'Sunday' order by gameDateTime limit 1)) as expired ";
$sql .= "from schedule s ";
$sql .= "group by s.weekNum ";
$sql .= "order by s.weekNum;";
我试图改变它
//only adding $SQL row I changed which I changed from above code
$sql .= " (DATE_ADD(NOW(), INTERVAL " . date_default_timezone_set('Australia/Brisbane') . ") > (select gameDateTime from schedule where weekNum = s.weekNum and DATE_FORMAT(gameTimeEastern, '%W') = 'Sunday' order by gameTimeEastern limit 1)) as expired ";
上述查询导致出现一条错误消息,只是说明{qml}附近的sql syntx中有错误
问题(S)
date_default_timezone_set('Australia/Brisbane') . ") >
在上下文中的目的究竟是什么?SERVER_TIMEZONE_OFFSET
以接受SERVER_TIMEZONE_OFFSET
显然我的尝试不成功,我出错的任何指针?date_default_timezone_set('Australia/Brisbane')
是否有可能的mysql语句替代? 答案 0 :(得分:1)
INTERVAL " . SERVER_TIMEZONE_OFFSET . " HOUR)
您可以简单地提供一个数字,该数字对应于服务器时间与您希望看到的时间之间的小时数差异。
INTERVAL 5 HOUR
^
由于您知道这两个时区,因此您可以轻松辨别该号码。请注意,为PHP设置的时区并不一定意味着MySQL将具有相同的时区。如果您的MySQL服务器使用与您的应用程序期望相同的时区,则只需从查询中删除interval子句
即可 SERVER_TIMEZONE_OFFSET
是在该应用程序中使用的应用程序级别常量,并且仅代表它的外观中的数字。您可以根据之前解释的差异自行调整该数字。
您不一定要更改使用该常量的所有查询。在PHP配置文件中,您只需定义一次常量值,然后您的查询就会从那里选择它。
define("SERVER_TIMEZONE_OFFSET",6); // Or any number you see fit