数据库表我有:
S.no | j_id |age | e_date |
-------------------------------------
1 | 1 |32 | 2018-05-09 |
-------------------------------------
-------------------------------------
1 | 1 |32 | 2018-05-09 |
-------------------------------------
-------------------------------------
1 | 2 |32 | 2018-05-09 |
-------------------------------------
-------------------------------------
1 | 2 |32 | 2018-04-16 |
-------------------------------------
-------------------------------------
1 | 1 |32 | 2018-09-16 |
-------------------------------------
-------------------------------------
1 | 3 |32 | 2018-04-16 |
------------------------------------
在我的表格中,我有到期日期我希望得到结果的计数,其到期日期(前90天)等于当前日期。 比如我的有效期2018-05-09,当前日期是2018 - 02 - 2018(日期前90天),现在我想通过查询得到结果前90天的计数。
答案 0 :(得分:0)
select * from yourtable
where datediff(CURDATE(), e_date) > 90
尝试使用datediff来获取当天的不同日期计数。希望这是你想要的。
答案 1 :(得分:0)
要获取当前日期,您可以使用CURDATE(),CURRENT_DATE()和NOW()这些功能中的任何一个获取当前日期。虽然DATEDIFF()将获得两个时期(开始日期到结束日期)之间的差异。
如果您只需要获得符合90天条件的到期日期,请使用此:
SELECT e_date
FROM tableName
WHERE
e_date >= NOW()
AND datediff(e_date, NOW()) <= 90
在查询中,您正在扫描未来日期(从当前日期和向前),然后获取差异,如果差异小于或等于90天,则将被选中。
如果您需要向每位用户显示剩余天数:
SELECT sno, datediff(e_date, NOW())
FROM test
WHERE
e_date >= NOW()
AND datediff(e_date, NOW()) <= 90
答案 2 :(得分:0)
我喜欢尽可能地保持PHP方面的逻辑,所以我可能会在PHP中计算我的到期日期,只需添加一个简单的查询位置。在Laravel看起来像这样:
$expireTreshold = Carbon::now()->addDays(90);
$expireCount = $myModel->where('e_date', '<=', $expireTreshold)->count();
答案 3 :(得分:0)
它会正常工作。
SELECT count(*) FROM table WHERE e_date < CURDATE() - INTERVAL 90 DAY;
OR
SELECT count(*) FROM table WHERE e_date < NOW() - INTERVAL 90 DAY;
干杯:)
答案 4 :(得分:0)
试试这个:
$your_date = "2018-01-01";
query = 'SELECT COUNT(*)
FROM thetable WHERE e_date =
DATE_ADD($your_date, INTERVAL 90 DAY)';