0

我在这种格式 2012-02-1 的数据库表中有一个日期字段。我需要编写 3 个不同的查询:

a.) 我需要检索日期在今天和前 5 天之间的所有字段。
b.) 我需要检索日期早于今天日期 5 天的所有字段。
c.) 我需要检索日期在“5 天前”到“30 天前”之间的所有字段

我可以使用一些内置的mysql功能吗?

操作以下查询:

SELECT fields 
FROM table 
WHERE date >= CURDATE() - 5

或类似的东西

或者使用 between 子句。我没有得到正确的语法。

SELECT p.status,p.downpayment_date,p.policy_id,i.id,i.policy_type,i.carrier,i.policy_nu‌​mber,i.client_id,c.id,c.client_name FROM pdp_payment AS p,pdp_policy_info AS i,pdp_client_info AS c WHERE p.policy_id=i.id AND i.client_id=c.id AND (((p.status='close pending') OR (p.status='Cancel')) AND (p.downpayment_date BETWEEN ((INTERVAL 5 DAY AND CURDATE()) - (INTERVAL 30 DAY AND CURDATE()))) )
4

3 回答 3

0

对于日期在今天和前 5 天之间的所有字段。


SELECT  fields
FROM table
WHERE your_date_field_name BETWEEN CURDATE() - INTERVAL 5 DAY AND CURDATE()

你可以用类似的方法解决其他问题

于 2012-02-03T06:12:26.963 回答
0

date是一个关键字,因此当您将其用作字段名称时,它必须包含在反引号中,`否则您将收到解析错误。

要获得您想要的范围:

WHERE `date` BETWEEN DATE_ADD(NOW(),INTERVAL -30 DAY) AND DATE_ADD(NOW(),INTERVAL -5 DAY)
于 2012-02-03T06:49:01.690 回答
0

今天和前 5 天之间的日期。

SELECT  fields FROM table
WHERE date_field BETWEEN CURRENT_DATE - INTERVAL 5 DAY AND CURRENT_DATE

日期小于前 5 天。

SELECT  fields FROM table
WHERE date_field < CURRENT_DATE - INTERVAL 5 DAY
于 2012-02-03T06:43:50.173 回答