我有一个表,它将开始日期存储在2列中,类型为Date
。我需要选择在日期范围内打开的条目,但不考虑年份。
为防止混淆,我会以YYYY-MM-DD
或MM-DD
格式写下所有日期。
这是表格的一个简单示例。
| ID | Start | End |
| 1 | 2014-12-01 | 2014-12-31 |
| 2 | 2015-11-18 | 2016-01-20 |
| 3 | 2015-01-01 | 2016-01-18 |
| 4 | 2015-12-10 | 2015-12-20 |
基于this post我可以查找同年的条目。例如,如果我正在查找12-13
和12-15
之间打开的任何内容,则此查询会为我提供第1行和第4行。
SELECT *
FROM Dates
WHERE
DATE_FORMAT(Start, "%m%d") <= DATE_FORMAT("2015-12-13", "%m%d") AND
DATE_FORMAT(End, "%m%d") >= DATE_FORMAT("2016-12-15", "%m%d")
查找12-01
和01-13
之间的条目不会对此有用。
有人知道我怎么能这样做吗?
修改
所以每个感兴趣的人都有测试表。
CREATE TABLE `Dates` (
`idDates` int(11) NOT NULL AUTO_INCREMENT,
`Start` date DEFAULT NULL,
`End` date DEFAULT NULL,
PRIMARY KEY (`idDates`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
INSERT INTO `Dates`
(`idDates`,
`Start`,
`End`)
VALUES
('1', '2014-12-01', '2014-12-31'),
('2', '2015-11-18', '2016-01-20'),
('3', '2015-01-01', '2016-01-18'),
('4', '2015-12-10', '2015-12-20');
答案 0 :(得分:1)
我假设您有两个变量:tv_usec
和@StartDate
。然后你可以把逻辑编写为:
@EndDate