MySQL - 对DATETIME字段的约束没有返回预期的结果

时间:2013-02-27 07:19:35

标签: mysql sql datetime

这是我的测试表:

CREATE TABLE `test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `thetime` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `test` (`thetime`) VALUES ('2013-02-26 18:07:00');
INSERT INTO `test` (`thetime`) VALUES (NULL);
INSERT INTO `test` (`thetime`) VALUES (NULL);

SELECT * FROM test:

id | thetime
------------------------
1  | 2013-01-01 00:00:00
2  | null
3  | null

SELECT * from test where time<> '2013-01-01 00:00:00':

id | thetime
------------------------
empty result set

我希望在字段null中获得thetime值的2条记录

id | thetime
------------------------
2  | null
3  | null

我想知道为什么我没有得到这个结果的值null与'2013-01-01 00:00:00'不同

有谁知道?

干杯, 马克西姆

2 个答案:

答案 0 :(得分:5)

您获得空结果的原因是因为null未定义。

如果要比较空值,请使用IS NULL

SELECT * 
from   test 
where thetime IS NULL OR
      thetime <> '2013-01-01 00:00:00' 

答案 1 :(得分:2)

试试这样:

SELECT * 
FROM test 
WHERE thetime <> '2013-01-01 00:00:00' 
   OR thetime IS NULL

请参阅文档以获取进一步阅读: