MySQL查询根据记录中设置的日期范围之间的今天日期选择记录

时间:2012-05-25 02:20:58

标签: mysql sql

我有一个表exhibitions,其中有两列startDateendDate。我想根据今天的日期选择记录。因此,如果今天是'2012-05-24',我希望startDate的记录为'2012-05-01',endDate为'2012-05-31'。

我反向使用查询,查找“2012-05-01”和“2012-05-31”之间的记录,但不是基于今天的日期。任何方向都会有所帮助。

2 个答案:

答案 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')