3

なぜ(バイナリ)をCOALESCE(date1,date2)返すのですか?Blob両方の列のタイプはDATETIMEです。

完全な SQL クエリは次のとおりです。

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

私は通常 SQL-Server を rdbms として使用していますが、同期ツールを作成する必要があります。今、私は2つの日付のうちの1つを選択しようとしています. last_modifiednull の場合はdate_purchased返されます。

ただし、両方の日付が null でないレコードが複数ある場合でも、クエリはBlob. 正しい最後の日付を取得するにはどうすればよいですか?

編集SQL-Fiddleでは、MySql 5.1.61(私は5.0.51です)では再現できません。

4

2 に答える 2

2

これはおそらく修正されたバグです: bug-35662

[2008 年 3 月 28 日 22:44] パトリック・クルーズ

説明: Windows XP 32bit の 5.0.51a で
COALESCE(date, date)varbinary を返します(このフレーバーのみテスト済み)

COALESCE(date,date)Mac OS での返却日

...
...
...

[2008 年 3 月 31 日 17:41] Omer BarNir
バグは 5.0.52 で修正され、5.0.56 のテスト時には確認されませんでした - クローズ

于 2012-12-07T12:48:05.947 に答える
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;
于 2012-12-07T12:00:17.440 に答える