2012-12-07 114 views
3

爲什麼COALESCE(date1,date2)返回Blob(二進制)?兩列均爲DATETIMECOALESCE兩個日期返回二進制?

下面是完整的SQL查詢:

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

我通常使用SQL-Server作爲RDBMS但需要寫同步工具。現在我正在嘗試選擇兩個日期中的一個。如果last_modified爲空,則應返回date_purchased

但即使有多個記錄,其中兩個日期都不爲空,查詢返回只是Blob。如何獲得正確的最後日期?

編輯:在SQL-Fiddle它不能用MySql 5.1.61(我在5.0.51)重現。

+0

你在命令行上試過了嗎?或者你用什麼來激發查詢?那些列的數據類型是什麼? – fancyPants

+0

@tombom:我已經從MySql workbench 5.2.34和Visual Studio中試過了。順便說一句,我在Windows 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年03月28 22點44]

帕特里克克魯斯

說明:
COALESCE(date, date)回報VARBINARY上5.0.51a適用於Windows XP 32位(僅測試了這味)

​​返回日期的Mac OS

...
...
。 ..

[31 Mar 2008 17:41] Omer BarNir
該錯誤被修正爲5.0.52,在測試5.0.56時沒有被觀察到 - 關閉