处理日期

时间:2011-04-30 02:47:23

标签: php mysql datetime

这就是我需要做的事情:

  1. 我想在距离当前日期30天的日期时间MySQL字段中插入日期
  2. 当我提取该特定记录时,我希望能够检查该日期是否已过去(即到期日期)

4 个答案:

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