select '2011-02-29' BETWEEN '2011-02-01' AND '2011-03-03'这是返回1。我认为之间的没有考虑闰年。我想知道你对这件事的看法?
编辑
SELECT DATE( '2010-04-31' )返回NULL;
但select str_to_date('2010-04-31', '%Y-%m-%d')正在调整日期。
为什么?
谢谢韦努
发布于 2011-11-10 07:42:44
你需要把它投到今天,就像:
SELECT DATE('2011-02-29') BETWEEN DATE('2011-02-01') AND DATE('2011-03-03')从现场:
为了获得最佳结果,在使用日期值或时间值之间时,请使用CAST()显式地将值转换为所需的数据类型。示例:如果将日期时间与两个日期值进行比较,则将日期值转换为日期时间值。如果在与日期的比较中使用字符串常量(如'2001-1-1‘),则将字符串强制转换为日期(.
)。
发布于 2011-11-10 07:43:55
问题是你在比较字符串而不是日期。如果你尝试:
select DATE('2011-02-29') you get a NULL...发布于 2011-11-10 07:44:05
你在比较字符串..。您必须转换到目前为止的值(或至少是第一个值)。
用这个:
SELECT DATE('2011-02-29') BETWEEN '2011-02-01' AND '2011-03-03'这将给出NULL,因为日期不是真实的。
SELECT DATE('2008-02-29') BETWEEN '2008-02-01' AND '2008-03-03'这将给你1(真),因为日期是真实的(闰年)
https://stackoverflow.com/questions/8076236
复制相似问题