从e_date获取90天记录之前的用户数

时间:2018-02-08 07:42:41

标签: php mysql sql laravel-5.3

数据库表我有:

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天的计数。

5 个答案:

答案 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)';