我想获取将在一周或一个月内到期的日期列表... MySQL,字段为TIMESTAMP。
我尝试了以下查询...
SELECT CERT_ID,日期(CERTVALIDITY) FROM mst_CERT WHERE date(CERTVALIDITY)> now()-间隔1周ORDER BY CERTVALIDITY;
这将从当前日期返回所有日期
从mst_CERT中选择日期(CERTVALIDITY),其中curdate()= DATE(DATE_SUB(CERTVALIDITY,INTERVAL 1周));
什么也不返回...
从mst_CERT中选择日期(DATE_SUB(CERTVALIDITY,间隔1个月));
什么也不返回...
| CT00078 | 2020-02-28 |
| CT00098 | 2020-02-29 |
| CT00011 | 2020-03-31 |
| CT00012 | 2020-03-31 |
| CT00013 | 2020-03-31 |
| CT00014 | 2020-03-31 |
| CT00075 | 2020-03-31 |
| CT00055 | 2020-03-31 |
| CT00056 | 2021-03-31 |
答案 0 :(得分:1)
这将显示7天期限以外的CERT_ID。
SELECT CERT_ID, date(CERTVALIDITY)
FROM mst_CERT
WHERE date(CERTVALIDITY) > (NOW() + INTERVAL 7 day)
ORDER BY date(CERTVALIDITY);
这将为您显示7天之内的有效CERT_ID。
SELECT CERT_ID, date(CERTVALIDITY)
FROM mst_CERT
WHERE date(CERTVALIDITY) BETWEEN NOW() AND (NOW() + INTERVAL 7 day)
ORDER BY date(CERTVALIDITY);
答案 1 :(得分:1)
您的第一个查询几乎是正确的。您错误地减去了1周的间隔,但实际上必须增加间隔。
SELECT CERT_ID, DATE(CERTVALIDITY)
FROM ms_CERT
WHERE DATE(CERTVALIDITY) < NOW() + INTERVAL 1 WEEK AND DATE(CERTVALIDITY) > NOW()
ORDER BY CERTVALIDITY;
以上查询将返回以下结果
| CT00078 | 2020-02-28 |
| CT00098 | 2020-02-29 |