我有一个exhibitions
有 2 列startDate
和endDate
. 我想根据今天的日期选择记录。因此,如果今天是“2012-05-24”,我希望记录startDate
是“2012-05-01”和endDate
“2012-05-31”。
我反向使用了查询,查找“2012-05-01”和“2012-05-31”之间的记录,但不是基于今天的日期。任何方向都会有所帮助。
SELECT *
FROM exhibitions
WHERE startDate > DATE_FORMAT(CONCAT(SUBSTR(NOW(),1,8),'01'),'%a')
AND endDate < DATE_FORMAT(LAST_DAY(NOW()),'%a')
尝试这个:
Select *
FROM exhibitions
WHERE startDate < CURRENT_DATE() and endDate > CURRENT_DATE()
更新:
您需要找到该月的第一天和该月的最后一天。有一个 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)