我有一个节假日,其结构如下:
id : start_date,end_date,user_id,user_id
如何获得用户在前一年的假期数?
我想用正确的语法做这样的事情:
SELECT SUM(end_date - start_date)
FROM holidays
WHERE user_id = 342
AND YEAR(end_date) = YEAR(CURRENT) - 1
发布于 2013-09-15 05:28:27
我认为这应该适用于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-15 09:40:31
你的查询很好。您没有任何语法改进要做。戈登·林诺夫( Gordon )的方法与你的方法不同之处在于,他使用的是TODAY
(即YEAR TO DAY
),而不是CURRENT
(即YEAR TO FRACTION
),但YEAR(CURRENT)
和YEAR(TODAY)
会得到完全相同的结果。
获得不同结果的唯一方法是,如果CURRENT
在SUM
中,比如SUM(CURRENT-start_date)
。这样,您就会得到比仅仅日期更精确的数据(您可以得到所需的天数,然后是hh:mm:ss.fff),但是如果您使用了TODAY
,那么您就只能得到日期了。
除此之外,一切都很好。
https://stackoverflow.com/questions/18812402
复制相似问题