我已为日期范围内的员工分配了班次。
我必须列出指定在特定月份(例如十月)的班次。
我将为轮班分配轮班开始日期和轮班结束日期。
说轮班开始日期为10月28日,轮班结束日期为11月4日。
现在,如果要显示分配给11月的班次,则不会显示该日期的班次。
我已经使用
进行了检查shiftStartDate>=oct 1
和
shiftEndDate<=oct31
我也尝试在查询之间使用。
如果轮班开始日期和结束日期在同一月份,则此方法很好。
答案 0 :(得分:1)
您可以利用mysql中的BETWEEN
函数来选择数据,其中特定日期在 2个给定日期之间(即您的 shiftStartDate 和 shiftEndDate 列)。
示例:
SELECT *
FROM
example_table
WHERE
(example_date BETWEEN shiftStartDate AND shiftEndDate);
example_date是您要检查的日期,例如'2018-10-11'。
答案 1 :(得分:0)
如果在班次的开始和结束中具有 DATETIME 列,则需要查询所有在当前月份之内或之前开始,或者在当前月份之内或之后结束,例如获得八月份的班次:
SELECT * FROM `shift`
WHERE `start` <= '2018-08-31'
AND `end` >= '2018-08-01';
查询后我将实际计算的轮班天数。
还要确保使用正确的 datetime 格式。