【发布时间】:2015-10-13 17:18:34
【问题描述】:
感谢一些帮助,我有一个 MySQL 查询,该查询从 2014 年 10 月 10 日开始,并对 12 个月内的假期数量进行罚款,例如 2014 年 10 月 10 日到 2015 年 10 月 9 日,然后是 2015 年 10 月 10 日到 2016 年-10-09
SELECT
e.name AS Employee,
CEIL(DATEDIFF(h.date, e.startdate)/365) as Year,
count(h.date) as Holidays_Taken
FROM employees AS e
LEFT JOIN holidays_taken AS h ON e.id = h.empid
WHERE e.id = 1
GROUP BY Year
结果
+----------+------+---------------+
| Employee | Year | Holidays_Taken|
+----------+------+---------------+
| Jon | 1 | 5 |
+----------+------+---------------+
| Jon | 2 | 1 |
+----------+------+---------------+
是否可以让年份显示 2014-10-10 到 2015-10-09 而不是第 1 年,然后在第 2 年显示 2015-10-10 到 2016-10-09
这是我的SQL FIDDLE
谢谢
【问题讨论】:
-
您是否尝试将日期添加到返回字段列表中?喜欢:
SELECT h.date, e.startdate, e.name [...]? -
@CodeGodie 我有一个小提琴demo
-
只是一个观察,但看起来你给自己一个闰年错误。每四年有366天。如果可能,请始终尝试使用内置函数进行日期和时间操作。