我有一个表exhibitions
,其中有两列startDate
和endDate
。我想根据今天的日期选择记录。因此,如果今天是'2012-05-24',我希望startDate
的记录为'2012-05-01',endDate
为'2012-05-31'。
我反向使用查询,查找“2012-05-01”和“2012-05-31”之间的记录,但不是基于今天的日期。任何方向都会有所帮助。
答案 0 :(得分:0)
试试这个:
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)
答案 1 :(得分:0)
SELECT *
FROM exhibitions
WHERE startDate > DATE_FORMAT(CONCAT(SUBSTR(NOW(),1,8),'01'),'%a')
AND endDate < DATE_FORMAT(LAST_DAY(NOW()),'%a')