-1

我有两个日期列,dateA并且dateB. dateA如果我从dateB( ) 中减去dateB - dateA,我会得到错误的结果但不使用DATEDIFF(dateB,dateA)函数。在包含数据但不与以下查询一起使用的表中使用直接减法时,我得到了错误的结果。

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

为什么?

编辑:

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

我对吗?

4

2 回答 2

0

您的列是定义为日期还是 Varchars?因为作为字符串的日期没有任何意义。当您执行 aDATE('2013-01-31')时,它会创建一个日期对象,因此减法有效。因此,如果您的列定义为 Varchar,请执行DATE(dateB) - DATE(dateA).

于 2013-06-21T03:23:37.520 回答
0

据推测,您的列不是作为日期存储的,而是作为字符串存储的。如果将它们存储为日期,则减法将按预期工作。

当您减去两个字符串时,例如:

SELECT '2013-01-31' - '2013-01-27'

然后 MySQL 根据前导数字将它们转换为数字。在这种情况下,两者都以数字开头2013,因此都转换为2013(如果开头没有数字,则值为0)。然后减去这些数字。

于 2013-06-21T03:26:45.003 回答