mysql日期直接减法

时间:2013-06-21 03:19:39

标签: mysql date

我有两个日期列,dateAdateB。如果我从dateAdateB)中减去dateB - dateA,则会得到错误的结果,但不会使用DATEDIFF(dateB,dateA)函数。当在具有数据但不具有以下查询的表中使用时,我从直接减法得到错误的结果。

SELECT DATE('2013-01-31') - DATE('2013-01-27')

为什么?

编辑:

我发现在MySQL中,如果两个日期都在一个月之内,那么直接减法会给出正确的结果,但如果日期跨越月份,那么可能会出现问题。

我是对的吗?

2 个答案:

答案 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)。然后减去这些数字。