2012-12-07 2 views
3

COALESCE(date1,date2)Blob (이진)을 반환합니까? 두 열 모두 DATETIME입니다.COALESCE 두 날짜가 이진수를 반환합니까?

SELECT COALESCE(last_modified, date_purchased)As LastModifiedOrPurchased 
FROM Orders 
ORDER BY COALESCE(last_modified, date_purchased)DESC 
LIMIT 1; 

내가 일반적으로 RDBMS로 SQL-Server를 사용하지만 동기화 도구를 쓸 필요 해요 :

여기에 전체 SQL 쿼리입니다. 이제 두 가지 날짜 중 하나를 선택하려고합니다. last_modified이 null 인 경우 date_purchased을 반환해야합니다.

두 날짜가 모두 null이 아닌 레코드가 여러 개있는 경우에도 쿼리는 단지 Blob을 반환합니다. 마지막으로 정확한 날짜를 얻는 방법?

: SQL-Fiddle에서 편집하십시오. MySql 5.1.61 (i5.051)에서는 재생성 할 수 없습니다.

+0

명령 줄에서 해 보셨습니까? 아니면 쿼리를 실행하는 데 사용합니까? 그리고 이러한 열의 데이터 유형은 무엇입니까? – fancyPants

+0

@tombom : MySql Workbench 5.2.34 및 Visual Studio에서 시도했습니다. Btw, 나는 2008 년 창문에있다. –

+0

예, 그것이 재현 가능하다면 나는 궁금해했을 것이다. 많은 클라이언트가 데이터를 올바르게 표시하는 데 문제가 있거나 사용자에게 부탁한다고 생각합니다. 즉 Toad를 올바르게 사용하지 않고'tinyint'를 제대로 표시하지 않고 (단지 체크 박스 만 사용합니다) 'NULL'값은 표시되지 않습니다. 전혀 표시되지 않으므로 NULL인지 빈 문자열인지 알 수 없습니다. 그럼에도 불구하고 나는 아직도 두꺼비를 추천 할 수있다. 문제는 고객입니다! – fancyPants

답변

1

MySql Workbench (및 MS Visual Studio)에서이 문제가 발생하는 이유는 아직도 알지 못합니다. 하지만 해결 방법을 찾았습니다. 난 그냥 DATETIME에 결과를 캐스팅과 같이 기대 작품 :

SELECT CAST(COALESCE(last_modified, date_purchased)AS DATETIME)As LastModifiedOrPurchased 
FROM Orders 
ORDER BY COALESCE(last_modified, date_purchased)DESC 
LIMIT 1; 

편집 : 잭이 주석 것처럼, 또한 IFNULL 작품 :

SELECT IFNULL(last_modified, date_purchased)As LastModifiedOrPurchased 
FROM Orders 
ORDER BY IFNULL(last_modified, date_purchased)DESC 
LIMIT 1; 
2

이 아마 수정 된 버그 : bug-35662

[2008년 3월 28일 22시 44분] 패트릭 대원

설명 :
COALESCE(date, date) 반환 윈도우 XP 32 비트에 대한 5.0.51a에 VARBINARY는

COALESCE(date,date) 반환 맥 OS

에 날짜 ...
...
(만이 맛을 테스트). ..

[31 Mar 2008 17:41] Omer BarNir
이 버그는 5.0.52에서 수정되었으며 5.0.56을 테스트 할 때 관찰되지 않았습니다.