我有一个问题:
SELECT * FROM MY TABLE WHERE END_TIME BETWEEN ? AND ?
当 END_TIME 是:
`END_TIME` datetime default NULL,
当我移动我的表时,此查询停止正常工作:
ENGINE=InnoDB
从 MyISAM 迁移到 InnoDB 会导致问题吗?
最佳答案
好吧,您更改了数据库引擎,现在以不同的方式处理空值。
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
关于日期和InnoDB之间的Mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17510092/