我正在将基于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,发现以下示例听起来像它(11/23/2009是星期一,今天也是8/8,但它没有相同的方式不同)PHP Strtotime erratic function < / p>
我的假设是php计算错误,oracle是正确的。
你说什么? ; - )
谢谢!
答案 0 :(得分:3)
没有看到我怀疑它的确切值,因为其中一个正在调整夏令时而另一个则没有。世界上大多数地区在游行期间改变夏令时。所以在你的第一个例子中,两个日期都在相同的GMT偏移中,但在第二个(11月),它们不是。
所以你的一个平台(可能是甲骨文)正在考虑这一小时的转变而另一个则没有。
答案 1 :(得分:1)
3600 =一小时可能是时区差异?
答案 2 :(得分:0)
53827200 =(623 * 60 * 60 * 24)
所以53827200正是24小时的623天。
53823600是622.958333天或622天(24小时)加上23小时。
对于给定的权利定义,两者都是正确的。