[英]How to check in MySQL if any date in a range of dates falls between dates held in a table
我目前有一張表格,其中包含員工休假的一系列日期:
DROP TABLE IF EXISTS `holidays`;
CREATE TABLE `holidays` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`staffid` int(11) DEFAULT NULL,
`startdate` datetime DEFAULT NULL,
`enddate` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
);
INSERT INTO `holidays` (`id`, `staffid`, `startdate`, `enddate`)
VALUES
(1,1,'2016-01-25 12:45:00','2016-01-29 12:30:00'),
(2,1,'2016-01-18 09:00:00','2016-01-18 12:45:00'),
(3,1,'2016-02-29 09:00:00','2016-03-04 16:30:00'),
(4,1,'2016-01-19 12:30:00','2016-01-19 15:00:00');
我想做的是檢查此工作周中的任何日期(mon-fri)是否在表格的開始日期和結束日期之間。 這似乎需要循環瀏覽本工作周中的每個日期,但是我不知道在MySQL中是否可行。 我寧願不循環使用PHP發送多個查詢,因為那樣可能最終會很慢。
有什么建議么?
馬丁·施耐德 ( Martin Schneider )的上述評論幫助我得出了答案。 它不是特定於MySQL的,而是解決問題的邏輯方法,因此,我將在下面使用的查詢包括在內,以幫助將來遇到此問題的任何人:
SELECT * FROM holiday
WHERE staffid = {staff id}
AND '{date on monday}' <= DATE(enddate)
AND '{date on friday}' >= DATE(startdate)
根據需要替換大括號內的文本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.