首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL中DATE()函数中两个日期之间的差异

MySQL中DATE()函数中两个日期之间的差异
EN

Stack Overflow用户
提问于 2020-07-15 06:54:24
回答 1查看 623关注 0票数 2

我使用DATE()函数来计算MySQL中两个日期之间的差异

SYSDATE()函数的值如下

代码语言:javascript
复制
select SYSDATE();
2020-07-15 12:16:07.0

当我使用同一个月的日期时,它给出了正确的结果。

代码语言:javascript
复制
select DATE(SYSDATE())- DATE('2020-07-13');
2

但是当我使用上个月的日期时,是86而不是16;

代码语言:javascript
复制
select DATE(SYSDATE())- DATE('2020-06-29');
86

编辑:我知道我们可以使用DATEDIFF(),但是我想验证为什么DATE()函数会给出这样的结果,因为我们已经在代码中使用它了

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-15 07:34:49

MySQL不支持从另一个日期减去一个日期。密码

代码语言:javascript
复制
SELECT DATE '2020-07-15' - DATE '2020-06-29';

因此,应该会导致错误,但是MySQL会悄悄地将其转换为以下内容:

代码语言:javascript
复制
SELECT 20200715 - 20200629;

考虑到您想要减去两个值,它假设您想要处理数字。日期不是数字,但是它们的内部表示yyyymmdd可以用数字表示。因此,虽然CAST(DATE '2020-07-15 ' AS int)由于语法错误而失败(这是应该的),但在减法方面,MySQL并不一致。它生成数字20200715和20200629,并使用这些数字。

我觉得这是个虫子。MySQL应该在从另一个DATE中减去一个DATE时引发异常,或者返回一个DATE

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

https://stackoverflow.com/questions/62909142

复制
相关文章

相似问题

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