有人可以指向我的官方MySQL文档,其中声明您可以进行这样的比较:
DECLARE mydate DATE;
...
IF mydate > '2015-04-01' THEN
...
END IF;
答案 0 :(得分:2)
当您将DATE,TIME,DATETIME或TIMESTAMP与<, <=, =, >=, >, or BETWEEN operators
的常量字符串进行比较时,MySQL通常会将字符串转换为内部长整数,以便更快地进行比较(还有一些更“放松”)字符串检查)。但是,此转换受以下例外情况限制:
对于这些异常,通过将对象转换为字符串并执行字符串比较来完成比较。 为了安全起见,假设要将字符串作为字符串进行比较,并且如果要将时间值与字符串进行比较,请使用相应的字符串函数。 特殊的“零”日期&#39; 0000-00-00&#39;可以作为&#39; 0000-00-00来存储和检索。当一个&#39; 0000-00-00&#39; date通过Connector / ODBC使用,它会自动转换为NULL,因为ODBC无法处理这种日期。 因为MySQL执行刚才描述的转换,所以以下语句有效(假设idate是DATE列):
INSERT INTO t1 (idate) VALUES (19970505);
INSERT INTO t1 (idate) VALUES ('19970505');
INSERT INTO t1 (idate) VALUES ('97-05-05');
INSERT INTO t1 (idate) VALUES ('1997.05.05');
INSERT INTO t1 (idate) VALUES ('1997 05 05');
INSERT INTO t1 (idate) VALUES ('0000-00-00');
SELECT idate FROM t1 WHERE idate >= '1997-05-05';
SELECT idate FROM t1 WHERE idate >= 19970505;
SELECT MOD(idate,100) FROM t1 WHERE idate >= 19970505;
SELECT idate FROM t1 WHERE idate >= '19970505';