Mysql 合并两个日期返回二进制?
为什么Mysql 合并两个日期返回二进制?,mysql,sql,mysql5,Mysql,Sql,Mysql5,为什么合并(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,但需要编写一个同步工具。现在我试
合并(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,但需要编写一个同步工具。现在我试着从两个日期中选择一个。如果上次修改的为空,则应返回购买日期
但是,即使有多个记录的两个日期都不为空,查询也只返回Blob
。如何获得正确的最后日期
编辑:MySql 5.1.61(我使用的是5.0.51)无法复制它。我仍然不知道为什么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;
这可能是一个已修复的错误:
[2008年3月28日22:44]帕特里克·克鲁斯
说明:
COALESCE(date,date)
在Windows的5.0.51a上返回varbinaryXP 32位(仅测试此版本)
COALESCE(日期,日期)
在Mac OS上返回日期
…
…
...
[2008年3月31日17:41]Omer BarNir
该错误在5.0.52中修复,在测试5.0.56-关闭时未观察到
你在命令行上试过了吗?或者您使用什么来触发查询?这些列的数据类型是什么?@tombom:我已经在MySql workbench 5.2.34和Visual Studio中试用过。顺便说一句,我使用的是windows 2008。是的,我想知道它是否可以复制。很多客户端在正确显示数据方面存在问题,或者认为他们帮了用户一个忙,例如,我使用的是Toad,它不会正确显示tinyint
(它当时只使用复选框),并且NULL
值根本不会显示,因此您无法判断它是NULL还是空字符串。尽管如此,我还是可以推荐蟾蜍。问题是你的客户!既然只有两列,为什么不使用IFNULL()@Jack:this也可以(相应地编辑了我的答案):