我有两个日期列,dateA
和dateB
。如果我从dateA
(dateB
)中减去dateB - dateA
,则会得到错误的结果,但不会使用DATEDIFF(dateB,dateA)
函数。当在具有数据但不具有以下查询的表中使用时,我从直接减法得到错误的结果。
SELECT DATE('2013-01-31') - DATE('2013-01-27')
为什么?
编辑:
我发现在MySQL中,如果两个日期都在一个月之内,那么直接减法会给出正确的结果,但如果日期跨越月份,那么可能会出现问题。
我是对的吗?
答案 0 :(得分:0)
您的列是定义为日期还是定义为变量?因为Date as a String意味着什么。当你执行DATE('2013-01-31')
时,它会创建一个日期对象,因此减法有效。因此,如果您的列定义为Varchar,请执行DATE(dateB) - DATE(dateA)
。
答案 1 :(得分:0)
据推测,您的列不会存储为日期,而是存储为字符串。如果将它们存储为日期,则减法将按预期工作。
当你减去两个字符串时,例如:
SELECT '2013-01-31' - '2013-01-27'
然后MySQL根据前导数字将它们转换为数字。在这种情况下,两者都以数字2013
开头,因此两者都转换为2013
(如果开头没有数字,那么值将为0
)。然后减去这些数字。