我使用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()函数会给出这样的结果,因为我们已经在代码中使用了这个函数
1条答案
按热度按时间3qpi33ja1#
mysql不支持从一个日期减去另一个日期。代码
因此会导致错误,但mysql会自动将其转换为:
考虑到您想要减去两个值,它假定您想要处理数字。日期不是数字,但它们的内部表示形式yyyymmdd可以用数字表示。所以,虽然
CAST(DATE '2020-07-15 ' AS int)
由于语法错误而失败,mysql在减法方面是不一致的。它生成数字20200715和20200629,并使用这些数字。我认为这是个错误。mysql应该引发异常或返回
INTERVAL
减去一的时候DATE
从另一个。