首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >枣间比较

枣间比较
EN

Stack Overflow用户
提问于 2016-10-10 00:03:03
回答 1查看 17关注 0票数 1

是否有一种方法可以使MySQL返回1而不是0 for SELECT NOW() = '2016-10-10',而无需转换(CAST('2016-10-10' AS DATE))或转换为date (DATE('2016-10-10'))。

我的实际案例场景是DATEDATETIME列之间的比较。我想对这些列进行JOIN,但是只有当我可以使MySQL只比较日期而忽略时间时,这才有可能。

我不能进行转换/转换,因为这非常昂贵( 查询性能慢,因此加入视图 )。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-10 00:18:25

您需要转换的不是'2016-10-10'字符串(因为它是有效日期文字),而是NOW()

NOW()以小时、分钟和秒的形式返回当前时间戳。而'2016-10-10'被解释为'2016-10-10 00:00:00'。这大概不等于现在的时间。

所以

代码语言:javascript
复制
SELECT DATE(NOW()) = '2016-10-10'

UPD

我可以让MySQL只比较日期,忽略时间。

对于比较coldate = coldatetime,您可以在范围上进行比较,例如:

代码语言:javascript
复制
coldate <= coldatetime AND coldate + INTERVAL 1 DAY > coldatetime

根据你的实际情况,这可能是有益的,也可能是没有好处的。

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

https://stackoverflow.com/questions/39949758

复制
相关文章

相似问题

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