2013-07-15 1 views
0

연도는 00 년 대신 현재 연도로 선택됩니다 (아래 그림 참조).현재 연도를 문자열에서 날짜 함수로 사용합니다.

mysql> select str_to_date('Jul 15 12:12:51', '%b %e %T'); 
+--------------------------------------------+ 
| str_to_date('Jul 15 12:12:51', '%b %e %T') | 
+--------------------------------------------+ 
| 0000-07-15 12:12:51      | 
+--------------------------------------------+ 

예상 결과 :

| 2013-07-15 12:12:51      | 
+0

이유는 무엇입니까 많은 다른 시스템과 같은 대신 '1970'의 MySQL을주고 올해 '0000' ? – heldt

답변

3

글쎄, 그 의도입니다.

미정 날짜 또는 시간 부분 값이 0이면, 그래서 불완전 STR에 지정된 값은 일부 결과 또는 0 ...] "제로"날짜 설정 모든 부품을 생산 다음 doc는 인용 또는 부분 값이 0 인 날짜는 SQL 모드가 그러한 값을 허용하지 않도록 설정되어 있지 않으면 허용됩니다.

이 BTW, 해결하기 쉽습니다 :

select str_to_date(CONCAT(YEAR(NOW()), ' ', 'Jul 15 12:12:51'), '%Y %b %e %T'); 
-- July, 15 2013 12:12:51+0000 
0

, 간단한 추한,하지만 작동합니다

select str_to_date(concat('Jul 15, ', year(now()), ' 12:12:51'), '%b %e, %Y %T'); 
관련 문제