【发布时间】:2011-10-22 20:14:18
【问题描述】:
我正在将基于 PHP (v 5.2.17) 的报告转换为 SSRS。
我正在尝试编写一个像 php 文件一样减去日期的查询。
日期计算要么完全匹配,要么相差 3600 秒
$timediff=strtotime(date("Y-m-d"))-strtotime("03/29/2007");
print $timediff; // 137635200
select (trunc(sysdate) - to_date('03/29/2007','MM/DD/YYYY'))*60*60*24 from dual
-- returns 137635200 - matches
$timediff=strtotime(date("Y-m-d"))-strtotime("11/23/2009");
print $timediff; // 53823600
select (trunc(sysdate) - to_date('11/23/2009','MM/DD/YYYY'))*60*60*24 from dual
-- returns 53827200 - doesnt match - off by 3600
我搜索了 stackoverflow,发现下面这个例子听起来很像(2009 年 11 月 23 日是星期一,今天 8 月 8 日也是如此,但差别不大)PHP Strtotime erratic function
我的假设是php计算错误,oracle是正确的。
你说什么? ;-)
谢谢!
【问题讨论】:
-
3600 = 一个小时。为什么会提前一个小时?也许其中一个包含夏令时更改,而一个不包含?
-
PHP服务器的时区和Oracle服务器的时区是否一致?