2011-11-07 6 views
0

나는 날짜가 내 MySQL 데이터베이스에 저장 한 내가 할 수있는 운동과 같이 날짜 이후 일 년 시간의 최고 형식이기 때문에php strtotime 및 근무 년?

ceil(time() - strtotime($account['joined'])/60/60/24 % 365); 

하지만 어떻게 내가 후하기 때문에, 수년에 해결할 수 천년과 그 것 같은가?

2011-10-06 22:01:57 

감사

+0

'$ account ['joined ']'값의 샘플을 게시 할 수 있습니까 – Mob

+0

윤년은 어떨까요? –

답변

1

사용 :

변수는 하나의있는 그대로 date("Y")

,210
<?php 
$time = strtotime("1 Jan 2001 1:11:11"); 
echo "Years since time: ".(date("Y") - date("Y", $time)); 

http://sandbox.phpcode.eu/g/220fe/1

+0

좋아, 이것을 시도합니다 – cgweb87

+0

분, 시간, 초 등이 작동합니까, 내 예제보다 그것을 사용하는 것이 더 좋습니까? – cgweb87

1

당신은 항상 date("Y", $timestamp)를 사용할 수

및 문제에 대한 당신이 date_diff 사용할 수

$datetime1 = new DateTime('2009-10-11'); 
$datetime2 = new DateTime('2009-10-13'); 
$interval = $datetime1->diff($datetime2); 
echo $interval->format('%R%a days'); 
2

당신은 시간 범위를 얻기 위해 MySQL 데이터베이스를 사용할 수 있습니다.

쿼리에 DATEDIFF을 사용하면 현재 날짜에서 연결 날짜를 빼면이 방법으로 시간 범위를 가져올 수 있습니다.

이 기능은 여기에 설명 :

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_datediffdate/time functions 내장을 사용하여, 당신은 MySQL의 측면에서 계산을 수행 할 수있는 경우는

+0

이것에 대해 생각했지만 내 웹 사이트는 데이터베이스 호출에 무겁고 오버 헤드를 많이 차지하므로 렌더링 PHP는 PHP를 사용하지 않으므로 감사합니다 :) – cgweb87

+1

이점은 데이터베이스 측에서 코딩 할 때입니다 : 오류 감소 (웹 서버와 별개의 경우 데이터베이스 클록), 트래픽 최소화 (매개 변수 전달이 많지 않음), 빠른 쿼리 등 모든 요소가 시간 계산에 포함됩니다. 저장 프로 시저에서 명령문을 자주 실행하면 쿼리 속도를 높일 수 있습니다. [link] (http://stackoverflow.com/questions/208976/are-stored-procedures-faster-for-simple-queries) – shimofuri

0

을 도움이되기를 바랍니다. 해당 테이블 T를 가정 예를 들어 날짜 열 D를 포함하고 당신은 일의 수의 측면에서 현재 날짜에 대해 비교하려는 :

SELECT 
    TIMESTAMPDIFF(DAY, D, CURDATE()) AS 'days_elapsed' 
FROM T 

당신은 다음 중 하나에 TIMESTAMPDIFF의 첫 번째 인수를 변경할 수 있습니다 FRAC_SECOND (마이크로 초), SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER 또는 YEAR.