PHP服务器\u时区\u偏移量说明

PHP服务器\u时区\u偏移量说明,php,mysql,Php,Mysql,我正在修改一个现有的应用程序,它使用常量SERVER\u TIMEZONE\u OFFSET。我以前从未遇到过这种情况,我能找到的最接近“SERVER\u TIMEZONE\u OFFSET”的搜索是在PHP文档中找到TIMEZONE\u OFFSET\u get()函数 下面是一个使用了`服务器\时区\偏移量'的查询示例 $sql = "select s.weekNum, count(s.gameID) as gamesTotal,"; $sql .= " min(gameDateTime)

我正在修改一个现有的应用程序,它使用常量
SERVER\u TIMEZONE\u OFFSET
。我以前从未遇到过这种情况,我能找到的最接近“SERVER\u TIMEZONE\u OFFSET”的搜索是在PHP文档中找到
TIMEZONE\u OFFSET\u get()
函数

下面是一个使用了`服务器\时区\偏移量'的查询示例

$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;";
这是我试图改变它

//仅添加我更改的$SQL行,我从上面的代码更改了该行

$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 ";
上面的查询只会生成一条错误消息,说明您的sql syntx在
date\u default\u timezone\u set('Australia/Brisbane')附近出现错误。”>

问题

  • 在上面的上下文中,
    SERVER\u TIMEZONE\u OFFSET
    的确切用途是什么
  • 我如何编辑查询
    SERVER\u TIMEZONE\u OFFSET
    以接受
    date\u default\u TIMEZONE\u set('Australia/Brisbane')
    显然我的尝试失败了,有没有指针出错
  • 除了我可以使用的
    SERVER\u TIMEZONE\u OFFSET
    之外,是否有一个可能的mysql station替代方案
  • 您可以简单地在那里提供一个数字,该数字对应于服务器时间和您期望看到的时间之间的小时差

    INTERVAL 5 HOUR
             ^ 
    
    由于您知道这两个时区,您可以很容易地分辨出该数字。请注意,为PHP设置的时区并不一定意味着MySQL将具有相同的时区。如果您的MySQL服务器使用的时区与应用程序预期的相同,您只需从查询中删除interval子句即可

    SERVER\u TIMEZONE\u OFFSET
    是在该应用程序中使用的应用程序级常量,从外观上看,它只代表一个数字。您可以根据前面解释的差异自行调整该数字

    您不必更改所有使用该常量的查询。在PHP配置文件中,您只需定义一次常量值,您的查询就会从中选择它

    define("SERVER_TIMEZONE_OFFSET",6);  // Or any number you see fit
    

    谢谢你现在就开始,并给出反馈
    define("SERVER_TIMEZONE_OFFSET",6);  // Or any number you see fit