2012-05-25 96 views
0

设定我有一个表exhibitions其具有2列startDateendDate。我想根据今天的日期选择记录。因此,如果今天是'2012-05-24',我希望startDate的记录为'2012-05-01',endDate为'2012-05-31'。MySQL查询,基于今天的日期选择记录之间时间范围在记录

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

回答

0

试试这个:

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) 
+0

这不是OP要求的。问题是如何让本月的第一天和最后一天用作'startDate,endDate' –

+0

谢谢,让我朝着正确的方向发展! – YoItsBen

+0

“SELECT * FROM'exhibitions' WHERE'startDate' CURRENT_DATE()”; – YoItsBen

0
SELECT * 
FROM exhibitions 
WHERE startDate > DATE_FORMAT(CONCAT(SUBSTR(NOW(),1,8),'01'),'%a') 
AND endDate < DATE_FORMAT(LAST_DAY(NOW()),'%a') 
相关问题