获取在一天内付款的用户sql

时间:2018-03-08 00:25:35

标签: mysql sql

这可能很容易,但我似乎无法理解它。我的用户表有一个next_payment DATETIME列,每个月都有一个更新。我想要一个查询来获取所有用户的next_payment DATETIME在当前日期时间的一天内。

我试过这样的事情,但它也让我的用户在15分钟内完成了他们的next_payment。不好

SELECT * FROM users WHERE next_payment >= NOW() AND next_payment <= NOW() + INTERVAL 1 DAY

我也尝试过这样的事情,但这并不起作用,因为它给了我所有用户像2或3个月前一样具有next_payment日期时间(不好)。

SELECT * FROM users WHERE next_payment <= NOW() + INTERVAL 1 DAY

提前感谢您提供任何帮助

3 个答案:

答案 0 :(得分:0)

需要Cast日期时间字段,以便您可以包含该期间内的所有数据并使用between

SELECT * FROM users WHERE cast(next_payment as date) between cast(NOW() as date) AND cast(NOW() + INTERVAL 1 DAY as date)

答案 1 :(得分:0)

我会用:

SELECT * FROM users WHERE TIMESTAMPDIFF(HOUR,NOW(),next_payment) <= 24

答案 2 :(得分:0)

DATEDIFF在MySQL中运行良好:

SELECT 
    * 
FROM 
    users 
WHERE 
    DATEDIFF(next_payment, NOW()) = 1

SQL Fiddle这个例子。