0

我有一个exhibitions有 2 列startDateendDate. 我想根据今天的日期选择记录。因此,如果今天是“2012-05-24”,我希望记录startDate是“2012-05-01”和endDate“2012-05-31”。

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

4

2 回答 2

0
SELECT *
FROM exhibitions
WHERE startDate > DATE_FORMAT(CONCAT(SUBSTR(NOW(),1,8),'01'),'%a')
AND endDate < DATE_FORMAT(LAST_DAY(NOW()),'%a')
于 2012-05-25T02:31:40.703 回答
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)
于 2012-05-25T02:23:23.803 回答