2011-01-04 4 views
3

MySQL의 마지막 datetime 스탬프 이후 1 시간인지 확인하고 싶습니다. 어떻게 PHP를 사용하여 이것을 할 수 있습니까?MySQL DATETIME 스탬프에 대한 시간 비교 확인

+0

필자는 데이터베이스의 'UNIX_TIMESTAMP'를 항상 PHP 쪽에서 조작하기 쉽도록 저장하는 것을 선호합니다. – RobertPitt

+1

@RobertPitt - UNIX_TIMESTAMP를 사용하는 것은 좋지 않습니다. – mauris

+0

@RobertPitt'DATE_SUB'과 그 친구들을 사용하는 데 어려움을 겪을 것입니다. – alex

답변

2

MySQL을 사용하는 가장 간단한 방법은 목표에 따라 DATE_SUB (또는 DATE_ADD)를 사용하는 것입니다. 예를 들어 :

SELECT DATE_SUB(NOW(), INTERVAL 1 HOUR) 

은 마찬가지로 당신은 "1 일"정도의 "1 분"과 같은 다른 것들로 "1 시간"을 대체 할 수 있습니다. 아마도 날짜가 일반적인 형식과 GMT 오프셋으로 저장되고 있기 때문에 항상 데이터베이스 수준에서 날짜 비교를하는 것이 더 좋습니다.

0

link은 PHP> = 5.3에 대한 date_diff에 대해 설명하고 일부는 이전 버전에 대한 해결책을 해결합니다.

0
$db_time = strtotime($row->timestamp_col); 
$age = 60 * 60; 
if ($db_time < (time() - $age)) { 
    doSomething(); 
} 

이것은 불필요하게 세분화되어 작동 방식을 확인할 수 있습니다.

0
$now = time(); 

$dbDate = strtotime($row['datetime']); 

if ($now > $dbDate + 3600) { 
    // yes 
} 
3

당신은 할 수 아마도 당신이 당신의 쿼리를 사용하여 날짜 필드와 현재 시간의 차이를 알려면, 그리고 그 결과를 반환 할 수 있습니다 대신 MySQL의에서

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

을이 모든 일을해야한다 행.

+0

나는 당신이 이것을 할다는 것을 몰랐다, 그래서 나는 PHP를 선택했다. – Strawberry

+0

그래서'TIMEDIFF (CURTIME(), $ dbDateTime)'을 사용 하시겠습니까? 예를 얻을 수 있을까요? – Strawberry

+0

당신은 여전히 ​​php 변수를 사용하고있는 것처럼 보입니까? db datetime 필드를 데이터베이스에서 직접 꺼냅니다. SELECT TIMEDIFF (CURTIME(), name_of_datetime_field)와 같은 것입니다. AS time_diff FROM table_name WHERE id = blah LIMIT 1 등등. 당신은 당신이 데이터베이스에서 datetime 값을 가져 오는 것과 동일한 쿼리에서 그것을 끌어 올 것입니다. – dqhendricks

0

수표를 검색어에 넣습니다. 그런 다음 MySQL 날짜 비교를 사용할 수 있으며 PHP는 알 필요가 없으며 상관하지 않습니다.