我需要针对数据库中的日期时间测试当前时间,如果已经过了30分钟则执行代码,如果不是则不行。这就是我所处的地方,我被困住了:
$link = mysqli_connect("hostname", "username", "password", "database");
$q = "SELECT id FROM dwCache ORDER BY id DESC LIMIT 1";
$qu = mysqli_query($link, $q);
while($row=mysqli_fetch_array($qu, MYSQL_ASSOC)){
$id = $row['id'];
$cache = $row['cache'];
$timest = $row['time'];
}
$newTime =
$difference = $timest
if($timest >= )
正如你所看到的那样,我失去了它,因为我不知道该怎么做。
$timest
返回2013-02-01 12:36:01
格式Y-m-d
h-i-s
双重道歉,其他删除。
答案 0 :(得分:41)
首先将$timest
转换为时间戳
$time = strtotime($timest);
$curtime = time();
if(($curtime-$time) > 1800) { //1800 seconds
//do stuff
}
答案 1 :(得分:10)
在sql语句中完成所有操作
SELECT id FROM `dqCache` WHERE `time`<DATE_SUB(NOW(), INTERVAL 30 MINUTE);
这将返回表中时间列之前30分钟之前的所有内容。
答案 2 :(得分:2)
我喜欢在这种情况下使用unix timestamps。
$timest = date('u'); // gets the unix timestamp
$q = "SELECT id
FROM `dwCache`
WHERE {$timest} - UNIX_TIMESTAMP(`timestamp_col`) > 1800";
<强>解释强>
这基本上计算表格列中当前时间和时间之间的差异。如果它高于1800(30分钟),它将选择该行,并且您的PHP代码将被执行。
<强>优点强>
使用它而不是你开始做的PHP检查有一些优点。您将选择更少的行,从而占用更少的内存。
<强> PS:强>
赞成使用MySQLi
!
答案 3 :(得分:-1)
SELECT id FROM dwCache ORDER BY id DESC LIMIT 1
你只会获得id
字段,这是第一个。
第二个,时间转换:MySQL convert datetime to Unix timestamp
第三:您可以使用strtotime
函数转换时间字符串。