2009-09-17 7 views
41

mysql에 datetime 필드 (endTime)가 있습니다. gmdate()를 사용하여이 endTime 필드를 채 웁니다.datetime에 30 분 추가 PHP/mysql

저장된 값은 2009-09-17 04:10:48과 비슷합니다. 이 endtime에 30 분을 추가하고 현재 시간과 비교하고 싶습니다. ie) 사용자는 endTime에서 30 분 동안 특정 작업을 수행 할 수 있습니다. 그의 endTime 30 분 후에, 나는 그가 그 일을하도록 허용해서는 안된다.

어떻게하면 PHP에서 할 수 있습니까?

나는 영역 차이가 없는지 확인하기 위해 gmdate를 사용하고 있습니다. 사전

답변

96

에서

감사합니다 당신이 MySQL을 사용하는 경우 이런 식으로 작업을 수행 할 수 있습니다

SELECT '2008-12-31 23:59:59' + INTERVAL 30 MINUTE; 


을 순수 PHP 솔루션 사용을 위해 strtotime

strtotime('+ 30 minute',$yourdate); 
+6

사용 DATE_ADD 함수입니다. 저것에 관하여 결코 알지 않았다. – jocull

5

MySQL은 기능을 가지고 두 번 추가하기 위해 ADDTIME을 호출했습니다 - 그래서 당신은 MySQL에서 모든 것을 할 수 있습니다 (pr 당신은> = MySQL 4.1.3을 사용하고 있습니다.) (테스트되지 않은) 같은

뭔가 :

SELECT * FROM my_table WHERE ADDTIME(endTime + '0:30:00') < CONVERT_TZ(NOW(), @@global.time_zone, 'GMT') 
+0

여기 datetime 변수에 추가하는 일반적인 방법을 찾고이 대답 만 나를 위해 일했습니다. – kurast

42

이 하나

DATE_ADD(datefield, INTERVAL 30 MINUTE) 
5

Dominc이 올바른 생각을 갖고 시도하지만, 표현의 반대편에 계산을했습니다.

SELECT * FROM my_table WHERE endTime < DATE_SUB(CONVERT_TZ(NOW(), @@global.time_zone, 'GMT'), INTERVAL 30 MINUTE) 

이렇게하면 모든 행 대신 30 분 계산을 수행하는 장점이 있습니다. 즉, MySQL이 해당 컬럼에서 인덱스를 사용할 수 있음을 의미합니다. 두 가지 모두 당신에게 스피드 업을 제공합니다.

2

MySQL의 트릭이 멋진 것을
DATE_ADD(datecolumn, INTERVAL 30 MINUTE); 
관련 문제