我有一张表 [holidays],其结构如下:
编号 | 开始日期 | 结束日期 | 用户身份
如何获取用户上一年的假期数?
我想要这样的语法正确的东西:
SELECT SUM(end_date - start_date)
FROM holidays
WHERE user_id = 342
AND YEAR(end_date) = YEAR(CURRENT) - 1
我认为这应该适用于informix:
SELECT SUM(end_date-start_date)
from holidays
where user_id = 342 and
YEAR(end_date) = YEAR(TODAY)-1;
注意:目前尚不清楚结束日期是否包括在内。你可能想要:
SELECT SUM((end_date-start_date) + 1)
from holidays
where user_id = 342 and
YEAR(end_date) = YEAR(TODAY)-1;
您的查询非常好。您无需进行任何语法改进。Gordon Linoff 的方法(可行)与您的唯一不同之处在于他使用的是TODAY
(即YEAR TO DAY
)而不是CURRENT
(即) ,YEAR TO FRACTION
但会得到完全相同的结果。YEAR(CURRENT)
YEAR(TODAY)
你会得到不同结果的唯一方法是如果你在CURRENT
里面SUM
有 SUM(CURRENT-start_date)
. 这样,您将获得比仅天数更高的精度(您将获得天数,然后是 hh:mm:ss.fff),但如果您使用TODAY
,则只会获得天数。
除此之外,它完全没问题。