2011-05-16 2 views
32

나는 그 같은 쿼리에서 현재의, 날짜 시간 필드를 얻을 :MySQL에서 datetime에서 3 시간을 빼는 방법은 무엇입니까?

SELECT DATE_FORMAT(x.date_entered, '%Y-%m-%d') AS date FROM x ORDER BY date ASC 

내가하고 싶은 것은 그 일 3 시간 (GMT 문제를) 빼기하는 것입니다,하지만 난으로 PHP에서 그것을 할 수 없습니다 PHP는 시간이 아닌 날짜 부분만을 알고 있습니다.

답변

59

MySQL은 DATE_SUB() 있습니다

SELECT DATE_SUB(column, INTERVAL 3 HOUR).... 

을하지만 시도하고 대신 기본 시간대 문제를 분류하는 것이 더하지 않을까요?

+0

처럼 변환 할 수 있습니다 내가 필요한 형식으로? '% Y- % m- % d' –

+0

@ 루카스 왜 처음에'DATE_FORMAT()'을하고 있는지 모르겠다 -'DATE (x.date_entered)'가 이미하지 않겠는가? 마지막 줄은 'DATE (DATE_SUB (x.date_entered, INTERVAL 3 HOUR))'입니다. –

+0

원하는 날짜 (YYYY/MM/DD)로 날짜를 미리 포맷하고 싶었지만, 그래서 PHP를 사용하여 SQL을 사용했습니다. –

0

일부 시간대의 문제를 가지고 소스 및 대상 시간대를 알고 가정하면, 그럼 GMT는 어떻게 얻는 정확히 내가 변경할 수 있습니다 일 (빌어 먹을 레거시)하지만 그래서

SELECT DATE_FORMAT(CONVERT_TZ(x.date_entered, 'UTC', 'Europe/Berlin'), 
        '%Y-%m-%d') AS date 
FROM x ORDER BY date ASC; 
관련 문제