【发布时间】:2015-12-30 08:07:54
【问题描述】:
我得到以下 SQL 查询
SELECT
e.id,
c.name,
e.location,
e.designation,
e.time_period_from,
e.time_period_to,
DATEDIFF(e.time_period_to, time_period_from) AS tenure_in_days
FROM
employment e
LEFT JOIN
company c ON (c.id = e.company_id)
LIMIT
0, 10
这是完美的工作,我有一个场景 time_period_to 可以有 NULL 值,在这种情况下,我想用当前日期替换它。
这是我尝试过的。
SELECT
e.id,
c.name,
e.location,
e.designation,
e.time_period_from,
e.time_period_to,
DATEDIFF(IF(ISNULL(e.time_period_to), NOW(), e.time_period_from)) AS tenure_in_days
FROM
employment e
LEFT JOIN
company c ON (c.id = e.company_id)
LIMIT
0, 10
这给了我以下错误
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'DATEDIFF'
我哪里错了?
【问题讨论】:
-
DATEDIFF(e.time_period_to, time_period_to)-- 那将永远是0,因为你要从自身中减去时间。 -
不,它返回给我 NULL
-
如果列是
NULL,它将返回NULL。但是当列被填充时,它会返回 0,因为你是从它本身减去列。 -
您不应该从结束时间中减去开始时间以获得有效差异吗?
-
喜欢
DATEDIFF(time_period_to, time_period_from)?