sql—使用date()函数计算mysql中两个日期之间的差异

xghobddn  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(253)

我使用date()函数来计算mysql中两个日期之间的差异
sysdate()函数的值如下

select SYSDATE();
2020-07-15 12:16:07.0

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

select DATE(SYSDATE())- DATE('2020-07-13');
2

但当我使用上个月的日期时,它给出的差值是86而不是16;

select DATE(SYSDATE())- DATE('2020-06-29');
86

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

3qpi33ja

3qpi33ja1#

mysql不支持从一个日期减去另一个日期。代码

SELECT DATE '2020-07-15' - DATE '2020-06-29';

因此会导致错误,但mysql会自动将其转换为:

SELECT 20200715 - 20200629;

考虑到您想要减去两个值,它假定您想要处理数字。日期不是数字,但它们的内部表示形式yyyymmdd可以用数字表示。所以,虽然 CAST(DATE '2020-07-15 ' AS int) 由于语法错误而失败,mysql在减法方面是不一致的。它生成数字20200715和20200629,并使用这些数字。
我认为这是个错误。mysql应该引发异常或返回 INTERVAL 减去一的时候 DATE 从另一个。

相关问题