2011-11-09 2 views
1

2 개의 날짜에 연산 (이 경우 DATEDIFF())을 수행해야합니다. 그러나 적어도 그 날짜들 중 하나는 불완전합니다.MYSQL의 불완전한 날짜에 대한 연산

예를 들어

: DATEDIF ('2010-01-00', '2010-02-01') 또는 DATEDIF ('2010-01-00', '2010-02-00')는

NULL을 반환합니다

실제로, http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_datediff의 설명서에는 DATEDIF가 모든 날짜 산술 기능처럼 불완전한 날짜를 처리 할 수 ​​없다고되어 있습니다.

저는 데이터베이스를 변경하고 싶지 않으며 실제로이 작업을 수행해야합니다.이를 수행하는 방법을 알고 계시습니까?

실제 문제는이 DATEDIF를 수행하는 것이지만 일반적으로 묻습니다.

+2

와 00 불완전 날짜를 확인하고 교체 할 수 있습니까? 데이터 유형은 무엇입니까? –

+0

우리는 하루를 보내지 않아 불완전합니다. 필드 유형은 mysql에서 날짜입니다. – dyesdyes

+1

1 년 1 개월이지만 하루는 없으면 "2 일 간의 차이"의 의미는 무엇입니까? – Toomai

답변

1

당신은 IF와 CONCAT 왜 그들이 처음부터 불완전 01.

IF (isnull(CONCAT(v6.title,v7.title,v8.title)), IF (isnull(CONCAT(v7.title,v8.title)), v8.title, 
     CONCAT(v7.title,\'.\',v8.title)), 
     CONCAT(v6.title,\'.\',v7.title,\'.\',v8.title)) AS "Datum", 
     IF (isnull(CONCAT(v9.title,v10.title)) & isnull(CONCAT(v11.title, v12.title)), v13.title, 
        IF (isnull(CONCAT(v9.title,v10.title)) & isnull(v13.title), CONCAT(v11.title,\'-\', v12.title), 
        IF (isnull(CONCAT(v11.title,v12.title)) & isnull(v13.title), CONCAT(v9.title,\':\', v10.title, \' Uhr\'), 
        "Hello World"))) AS "Uhrzeit", 
+0

간단하고 그러나 나는 그것에 대해 생각하지 않았다. 감사합니다. – dyesdyes