1

我有一张表 [holidays],其结构如下:

编号 | 开始日期 | 结束日期 | 用户身份

如何获取用户上一年的假期数?

我想要这样的语法正确的东西:

SELECT SUM(end_date - start_date)
FROM holidays
WHERE user_id = 342
    AND YEAR(end_date) = YEAR(CURRENT) - 1
4

2 回答 2

2

我认为这应该适用于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;
于 2013-09-15T13:28:27.393 回答
1

您的查询非常好。您无需进行任何语法改进。Gordon Linoff 的方法(可行)与您的唯一不同之处在于他使用的是TODAY(即YEAR TO DAY)而不是CURRENT(即) ,YEAR TO FRACTION但会得到完全相同的结果。YEAR(CURRENT)YEAR(TODAY)

你会得到不同结果的唯一方法是如果你在CURRENT里面SUMSUM(CURRENT-start_date). 这样,您将获得比仅天数更高的精度(您将获得天数,然后是 hh:mm:ss.fff),但如果您使用TODAY,则只会获得天数。

除此之外,它完全没问题。

于 2013-09-15T17:40:31.997 回答