首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有日期的运算符之间的mysql

问带有日期的运算符之间的mysql
EN

Stack Overflow用户
提问于 2011-11-10 07:36:21
回答 4查看 12.6K关注 0票数 2
代码语言:javascript
复制
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')正在调整日期。

为什么?

谢谢韦努

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-11-10 07:42:44

你需要把它投到今天,就像:

代码语言:javascript
复制
SELECT DATE('2011-02-29') BETWEEN DATE('2011-02-01') AND DATE('2011-03-03')

从现场:

为了获得最佳结果,在使用日期值或时间值之间时,请使用CAST()显式地将值转换为所需的数据类型。示例:如果将日期时间与两个日期值进行比较,则将日期值转换为日期时间值。如果在与日期的比较中使用字符串常量(如'2001-1-1‘),则将字符串强制转换为日期(.

)。

票数 3
EN

Stack Overflow用户

发布于 2011-11-10 07:43:55

问题是你在比较字符串而不是日期。如果你尝试:

代码语言:javascript
复制
select DATE('2011-02-29') you get a NULL...
票数 2
EN

Stack Overflow用户

发布于 2011-11-10 07:44:05

你在比较字符串..。您必须转换到目前为止的值(或至少是第一个值)。

用这个:

代码语言:javascript
复制
 SELECT DATE('2011-02-29') BETWEEN '2011-02-01' AND '2011-03-03'

这将给出NULL,因为日期不是真实的。

代码语言:javascript
复制
 SELECT DATE('2008-02-29') BETWEEN '2008-02-01' AND '2008-03-03'

这将给你1(真),因为日期是真实的(闰年)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8076236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档