数据库表i有:
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天的计数。
select * from yourtable
where datediff(CURDATE(), e_date) > 90
尝试使用日期为白天的日期计数。希望这就是您想要得到的。
我想尽可能将逻辑保存在PHP侧,因此我可能会在PHP中计算到有效期的日期,然后在查询中添加一个简单的位置。在Laravel中看起来像这样的东西:
$expireTreshold = Carbon::now()->addDays(90);
$expireCount = $myModel->where('e_date', '<=', $expireTreshold)->count();
用于获取当前日期,您可以使用curdate((,current_date((和现在((((这些功能中的任何一个都将获得当前日期。虽然日期((将获得两个期间之间的差异(开始日期到结束日期(。
如果您只需要获得适合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
它可以正常工作。
SELECT count(*) FROM table WHERE e_date < CURDATE() - INTERVAL 90 DAY;
或
SELECT count(*) FROM table WHERE e_date < NOW() - INTERVAL 90 DAY;
欢呼:(
尝试以下:
$your_date = "2018-01-01";
query = 'SELECT COUNT(*)
FROM thetable WHERE e_date =
DATE_ADD($your_date, INTERVAL 90 DAY)';