假设我有一个拍卖数据库-我保存的数据是拍卖的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返回除法运算的其余部分。