2012-03-14 2 views
0

MySQL format_date에 문제가있어 그 이유를 이해하지 못합니다. 나는 내 코드의 일부로서 다음과 같습니다 보인다MySQL FORMAT_DATE % d이 (가) '0'을 반환합니다.

date_format(NOW() + INTERVAL 3 DAY, '%Y-%m-%d') 

상관없이 내가 선택한 날짜의에서 % d는 단일의 제로 ('0')으로 반환 사실을 제외하고 잘 작동 할 수 있습니다. % d을 % e (으)로 변경하면 정확한 날짜를 얻을 수 있지만이 값을 사용하여 날짜를 비교하므로 10 이하의 숫자는 앞에 0이 필요합니다.이 설정이 데이터베이스입니까, 아니면 확실하지 않은 것이 있습니까?

미리 감사드립니다.

UPDATE :

$q = "SELECT date_format(NOW() + INTERVAL 3 DAY, '%Y-%m-%d') as 'today' from content_field_date LIMIT 1"; 

'오늘' '2012-03-0'

로 출력합니다 : 그것은 내가 이것에 쿼리를 단순화 할 때 때문에 DB에 뭔가이어야 같은 느낌

한편,이 : 제대로 반환

$q = "SELECT date_format(NOW() + INTERVAL 3 DAY, '%Y-%m-%e') as 'today' from content_field_date LIMIT 1"; 

'2012-03-17'

Zeth

+2

이상한. 'SELECT date_format (NOW() + INTERVAL 3 DAY, '% Y- % m- % d')'을 실행하면 제대로 표시됩니다. 나는 당신의 로케일과 관련이 있는지 궁금합니다. –

+0

전체 검색어를 표시 할 수 있습니까? 이것은 일어나서는 안됩니다. –

+0

여기에도 '0'이 표시되지 않습니다. 당신의 목표가 날짜를 비교하는 것이라면 mysql에서도 그렇게 할 수 있습니다. –

답변

1

당신이 묘사하는 것은 일어나지 않아야합니다. MySQL 버그를 찾았거나 잘못된 것을하고 있습니다.

날짜 만 비교하려는 경우 MySQL 내부에서 수행 할 수 있으며 DATE_FORMAT()을 사용하지 않아야합니다. 사용 된

(CURDATE() + INTERVAL 3 DAY) 
+0

나는 'YYYY-MM-DD'형식화 된 데이터베이스의 필드와 현재 날짜를 비교하고 있으므로, 뭔가 놓치지 않는 한 서식을 지정할 필요가 있습니까? – Zeth

+0

열이'CHAR'이며이 형식이 지정되었거나'DATE' 열입니까? –

+1

두 경우 모두'CURDATE() + INTERVAL 3 DAY'가 정상적으로 작동해야합니다.그러나 날짜 저장을 위해'DATE' 타입을 사용하십시오. 그렇지 않으면 거기에'2011-17-48'과 같은 데이터를 얻을 수 있습니다. 또는 '2011-AA-0B'. 또는 무엇이든. –

4

내가 "content_field_date"나는 믿고있어 드루팔의 테이블 이름을 기반으로, 오늘날이 같은 문제로 실행 :

DATE(NOW() + INTERVAL 3 DAY) 

나 : 당신은 날짜를 얻기 위해 이것을 사용할 수 있습니다 .

Some sql queries work in terminal but not with db_query() function in Drupal 6 Why..?

여기 : 이것에 대한 대답은 여기에서 찾을 수 있습니다 징후가 필요한 %가 탈출 할 수 있다는 점에서 http://drupal.org/node/100846

를, 그래서 올바른 쿼리해야합니다 :

$q = "SELECT date_format(NOW() + INTERVAL 3 DAY, '%%Y-%%m-%%d') as 'today' from content_field_date LIMIT 1"; 
관련 문제