簡體   English   中英

如何在MySQL中檢查日期范圍內的任何日期是否介於表中的日期之間

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM