我已经知道下面的陈述错了。请正确阅读问题!
以下查询我注意到正在使用MySql,我预计由于格式错误而导致错误或空数据 -
select * from test where date='"2014-11-24';
而是MySql为date=''
提供输出。它是预期还是一个错误?
我预计会出现语法错误(" 未结束),或者没有数据(搜索整个日期,即"2014-11-24
哪个不存在)。
UPDATE1 :大家好,我知道我的语法有错误,而且没有给出空行。我有一些日期为空的行(非空),如date =''。 我收到了这些条目!
答案 0 :(得分:2)
'"2014-11-24'
^
是无效日期。但语法没有问题,因此它计算成为一个不存在的日期,然后返回没有日期的结果,即null。
'2014-11-24'
有效
这也可以通过以下测试确认
SELECT UNIX_TIMESTAMP('2014-11-24') // valid value is returned
VS
SELECT UNIX_TIMESTAMP('"2014-11-24') // 0 is returned because the date was invalid
修改强>
好的,似乎它仍然不清楚。以此为例,它将消除混淆
SELECT UNIX_TIMESTAMP("") // Empty string right? guess what; returns 0
这意味着对于无效日期,值计算为0,对于计算为0的空日期,对于null,它计算为0. 0=0=0
:)这就是为什么你看到的结果当你去一个无效的日期时,你的桌子上的日期是空的。
答案 1 :(得分:0)
查询中双引号(“)的目的是什么?
'"2014-11-24'
^
试试这个:
SELECT * FROM test WHERE date = '2014-11-24';
答案 2 :(得分:0)
查询在"2014-11-24
表中搜索test
值。该记录属于测试表中不存在的"2014-11-24
值,因此返回空值。
答案 3 :(得分:-1)
SELECT * FROM `test` WHERE Date = '2014-11-21'