这就是我需要做的事情:
答案 0 :(得分:4)
INSERT INTO the_table
(fields, the_date_field)
VALUES
(?, DATE_ADD(NOW(), INTERVAL 30 DAY))
SELECT
the_date_field < NOW() AS expired
FROM
the_table
确认:
SELECT '2010-01-01' < NOW() AS expired;
+---------+
| expired |
+---------+
| 1 |
+---------+
SELECT '2012-01-01' < NOW() AS expired;
+---------+
| expired |
+---------+
| 0 |
+---------+
答案 1 :(得分:1)
对于您的插入内容:
$thirty_days_from_today = date('Y-m-d H:i:s', time() + 60*60*24*30);
检查过期日期:
if(strtotime($row['expiration_date']) < time()) {
// expired
}
答案 2 :(得分:0)
Strtotime是你的朋友,既可以确保你通过数据发送的输入是由PHP“理解”的,也可以用来做“+10天”之类的数学运算,这将从今天起十天后返回。你在strtotime可以扔的东西真是太神奇了。
在MySQL查询或与运营商的PHP比较中检查日期非常简单 - 例如&gt;,&lt; &lt;&gt;等。
答案 3 :(得分:0)
由于您使用的是PHP,因此可以使用strtotime()
$date = date( 'Y-m-d', strtotime( '+30 days' ) );
strtotime
可以处理其他增量(+1 days
,+5 minutes
等)
您还可以使用strtotime
来比较从数据库中读取它们的日期。如果您以全日(无时间戳)格式存储,则需要除以一整天的秒数。
$expdate = strtotime( date( 'Y-m-d', $record[ 'expiration_date' ] ) );
$today = strtotime( date( 'Y-m-d' ) );
$isExpired = round( abs( $expiration - $today ) / ( 24 * 60 * 60 ) ) >= 0;