设定我有一个表exhibitions
其具有2列startDate
和endDate
。我想根据今天的日期选择记录。因此,如果今天是'2012-05-24',我希望startDate
的记录为'2012-05-01',endDate
为'2012-05-31'。MySQL查询,基于今天的日期选择记录之间时间范围在记录
我已经反向使用查询,找到'2012-05-01'和'2012-05-31'之间的记录,但不是基于今天的日期。任何方向都会有帮助。
设定我有一个表exhibitions
其具有2列startDate
和endDate
。我想根据今天的日期选择记录。因此,如果今天是'2012-05-24',我希望startDate
的记录为'2012-05-01',endDate
为'2012-05-31'。MySQL查询,基于今天的日期选择记录之间时间范围在记录
我已经反向使用查询,找到'2012-05-01'和'2012-05-31'之间的记录,但不是基于今天的日期。任何方向都会有帮助。
试试这个:
Select *
FROM exhibitions
WHERE startDate < CURRENT_DATE() and endDate > CURRENT_DATE()
UPDATE:
你需要找到该月的第一天,和这个月的最后一天。有一个LAST_DAY()函数,但没有FIRST_DAY()函数。
要找到第一月的一天基于今天的日期,你可以使用:
DATE_ADD(LAST_DAY(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH)), INTERVAL 1 DAY)
要找到最后一天每月的基于今天的日期,你可以使用:
LAST_DAY(CURRENT_DATE())
最终的查询是这样的:
Select *
FROM exhibitions
WHERE Startdate = LAST_DAY(CURRENT_DATE())
AND
endDate = DATE_ADD(LAST_DAY(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH)), INTERVAL 1 DAY)
SELECT *
FROM exhibitions
WHERE startDate > DATE_FORMAT(CONCAT(SUBSTR(NOW(),1,8),'01'),'%a')
AND endDate < DATE_FORMAT(LAST_DAY(NOW()),'%a')
这不是OP要求的。问题是如何让本月的第一天和最后一天用作'startDate,endDate' –
谢谢,让我朝着正确的方向发展! – YoItsBen
“SELECT * FROM'exhibitions' WHERE'startDate' CURRENT_DATE()”; –
YoItsBen