我有两个日期列,dateA
和dateB
。如果我从dateB
(dateB - dateA
)中减去dateA
,我会得到错误的结果,但不使用DATEDIFF(dateB,dateA)
函数。当在有数据的表中使用直接减法时,我会得到错误的结果,但不使用下面的查询。SELECT DATE('2013-01-31') - DATE('2013-01-27')
为什么?
编辑:
我发现在MySQL中,如果两个日期在一个月内,那么直接相减会给出正确的结果,但如果日期跨越月,年,可能会有问题。
我说的对吗?
3条答案
按热度按时间yzxexxkh1#
假设你的列不是存储为日期,而是存储为字符串。如果它们存储为日期,那么减法将按预期工作。
当您减去两个字符串时,例如:
然后MySQL将它们转换为数字,基于前导数字。在这种情况下,两者都以数字
2013
开头,因此两者都被转换为2013
(如果开头没有数字,则值将是0
)。然后减去这些数字。odopli942#
你的列是定义为date还是Varchars?因为Date作为一个String没有任何意义。当你执行
DATE('2013-01-31')
时,它创建了一个date对象,因此减法可以工作。所以,如果你的列定义为Varchar,执行DATE(dateB) - DATE(dateA)
。zqry0prt3#