2011-08-09 5 views
0

PHP (v 5.2.17) 기반 보고서를 SSRS로 변환 중입니다.strtotime 함수를 사용하여 php 날짜 빼기가 올바른 시간을 반환하지 않음

PHP 파일처럼 날짜를 빼는 쿼리를 작성하려고합니다.

날짜 계산은 정확히 일치하거나, ​​또는 I에 유래를 검색하고 (2009년 11월 23일은 월요일 같은 소리 다음의 예를 발견했습니다

$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 

정확히 3천6백초에 의해 다르며 그래서 오늘 8/8이지만, 같은 방식으로 다릅니다) PHP Strtotime erratic function

내 가정은 PHP 계산이 잘못되었으며 오라클이 정확하다는 것입니다.

당신의 의견은 무엇입니까? ;-)

고마워요!

+2

3600 = 1 시간. 왜 한시간 떨어져 있을까? 어쩌면 하나는 일광 절약 시간 변경을 포함하고 하나는 포함하지 않을 수 있습니까? – Detect

+0

PHP 서버의 시간대가 Oracle 서버의 시간대와 일치합니까? – Detect

답변

3

정확한 값을 보지 않고서는 그 중 하나가 일광 절약 시간제를 조정하고 다른 하나는 그렇지 않기 때문에 의심 스럽습니다. 세계 대부분의 지역은 3 월 중 일광 절약 시간제로 /에서 변경됩니다. 그래서 첫 번째 예제에서 두 날짜는 동일한 GMT 오프셋에 있지만 두 번째 (11 월) 오프셋은 아닙니다.

플랫폼 중 하나 (아마도 오라클)가이 1 시간 단위를 고려 중이며 다른 하나는 그렇지 않습니다.

+0

PHP 시간대를 찾으려면,'date_default_timezone_get()'을 사용할 수 있습니다. 전 세계의 일부 지역에서는 일광 절약 시간제가 없으며 다른 곳에서는 그렇지 않습니다. – Mike

+0

고마워요. –

1

3600 = 시간당 차이 일 수 있습니까?

+0

고마워요. –

0

53,827,200 = (623 * 60 * 60 * 24)

그래서 53,827,200 정확히 24 시간 623 일.

53823600은 622.958333 일 또는 622 일 (24 시간) +23 시간입니다.

두 가지 모두 옳다.

+0

예.하지만 두 계산 모두 동일한 시간이 필요합니다. –

+0

귀하의 질문에는 일광 절약 시간제로 인해 더 길거나/짧은 날을 어떻게 수용 할 것인지에 대해서는 명시되어 있지 않습니다./당신이 결정하면, 다음 PHP 또는 오라클 구문은 올바른 질문을 조정할 수 있습니다. –

관련 문제