1

我有一个查询:

SELECT * FROM MY TABLE WHERE END_TIME BETWEEN ? AND ?

END_TIME是:

`END_TIME` datetime default NULL,

当我移动我的表时,此查询停止正常工作:

ENGINE=InnoDB

从 MyISAM 迁移到 InnoDB 会导致问题吗?

4

1 回答 1

0

好吧,您更改了数据库引擎,现在以不同的方式处理 null。

SELECT * FROM MY TABLE WHERE END_TIME BETWEEN '2013-01-01 AND ?

有效查询

SELECT * FROM MY TABLE WHERE END_TIME BETWEEN '2013-01-01' AND null

将始终返回 0 行

将您的查询重写为

SELECT * FROM MY TABLE WHERE END_TIME BETWEEN ? AND now()

或者

SELECT * FROM MY TABLE WHERE END_TIME >=0
于 2013-07-07T09:50:38.977 回答