假设我有一个拍卖数据库-我保存的数据是拍卖的id和开始时间(在Unix时间的意义上是int)。
每次拍卖会在每30天之后更新(内部更新,不取决于我),我想知道使用MySQL还有多少天,直到下一次更新。
在PHP中,我使用了我编写的以下代码:

public static function computeDaysToRenew($dateUnix) {
    $dateToday = new DateTime(date('Y-m-d H:i:s'));

    $dateRenew = new DateTime();
    $dateRenew->setTimestamp($dateUnix)->modify('+30 days');

    while ($dateRenew->getTimestamp() < $dateToday->getTimestamp()) {
        $dateRenew->modify('+30 days');
    }

    return (int) $dateRenew->diff($dateToday)->format('%d');
}

但老实说,我甚至不知道如何在MySQL中解决这个问题-我读过关于interval的文章,但我看不到解决方案。

最佳答案

SELECT 30 - (DATEDIFF(NOW(), date_begin) % 30) AS days_left;

DATEDIFF返回日期之间的天数差,modulus operator返回除法运算的其余部分。

10-06 05:55