通过PHP添加在mysql中保存的时间

时间:2013-08-21 18:24:19

标签: php mysql time

在PHP方面,我是一个非常新手的程序员。我经常可以处理我遇到的大多数问题,但是这个问题我很难过。

我正在尝试创建一个程序,用户可以在其中插入名称,插入后30分钟,名称将被标记为“已过期”。我能够在MySql中创建行并使用MySql我可以输入输入名称的时间。现在我要做的是从数据库中抽出时间并检查它是否已经输入30分钟。

我想我可以通过从数据库中抽出时间,添加30分钟,然后检查当前时间来查看它是否已过去。

这是我到目前为止所拥有的。时间是这种格式:2013-08-21 13:18:35

$result = mysqli_query($con,"SELECT * FROM list ORDER BY id desc");

// snip snip

while($row = mysqli_fetch_array($result))
            {

            echo "<tr>";
            echo "<td>" . $row['id'] . "</td>";
            echo "<td>" . $row['username'] . "</td>";
            echo "<td>" . $row['reason'] . "</td>"; 
            echo "<td>" . $row['date'] . "</td>"; 
            cho "</tr>";

                }

现在我知道我需要花费$ row ['date']并添加30分钟。我已经阅读了大约20个关于此的不同页面,但我所做的一切似乎都没有用。

我已经看到了一些不同的建议,例如date_add()和strtotime,但要么我做错了,要么它不起作用。

如果我能得到一个有效的代码示例,以便如何将30分钟添加到$ row ['date'],我相信我可以自己解释一下。

我知道在添加30分钟后如何比较两者,我认为这是正确的:

if ($time30 < $now) {
// Code to execute
}

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:0)

在PHP中:

$time30 = strtotime($row['date']) + (30 * 60);
$now = time();

在MySQL中

SELECT *,timestampadd(minute,30,date)<now() as expired FROM list ORDER BY id DESC

然后在PHP中,$row['expired']为1或0。

答案 1 :(得分:0)

首先,避免选择*

Mysql解决方案是在30分钟后返回时间作为列

SELECT TIMESTAMPADD(MINUTE,30,date1);

假设date1是您的列名,请避免使用日期作为列名,最好是维护问题

答案 2 :(得分:0)

考虑$row['date']打印2013-08-21 13:18:35。您需要使用 strtotime()将该值转换为时间戳。 请参阅此处的文档strtotime

现在你有了一个时间戳,你只需要加上1800秒(半小时)即可获得所需的时间。

然后,您的时间与现在之间的简单比较(您使用时间()获得值)将为您提供结果。

这段代码仅仅是一个例子(甚至过于详细,因为它可以更短):

$db_time = strtotime("2013-08-21 20:18:35");
$half_hour = 1800;

$time = $db_time + $half_hour;

if($time < time()) echo "expired"; else echo "active";