将sql表中的日期与当前日期进行比较

时间:2014-10-09 21:03:18

标签: php sql

我正在开发一个项目,其中需要使用当前日期检查sql表中的日期。如果票证超过当前日期,则票证的状态将从“活动”变为“过期”。
我不擅长php。这就是我提出的。我在页面顶部写了这个函数,这样每次页面加载时,都会检查日期并进行比较。日期格式为yyyy-mm-dd  我究竟做错了什么。有人可以帮帮我吗?

   $result= "SELECT date, status FROM TABLE1";

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

   if(strtotime($row['date']) > strtotime(date('Y-m-d'))){

$updatequery = " UPDATE TABLE1 SET $row[status] = 'Expired' ";

}}

4 个答案:

答案 0 :(得分:2)

我建议使用PHP DateTime类,它有日期差异功能,所以你可以像这样实现

$today = new DateTime('today');
$expires = new DateTime($datefromdb);
$diff = $today->diff($expires);
if($diff < 1)
{ 
   $updatequery = " UPDATE TABLE1 SET $row[status] = 'Expired' ";
}

答案 1 :(得分:0)

您可以使用

$result= "SELECT UNIX_TIMESTAMP(date) AS unixdate, status FROM TABLE1";

然后比较

if ($row['unixdate']) > strtotime(date('Y-m-d')))

答案 2 :(得分:0)

您的sql数据库可能位于服务器上,该服务器的时间与运行代码的计算机上的时间不同,因此我建议您在sql server端进行检查和更新。

(免责声明:我使用的是mysql,所以我写了我的答案。我假设你可以翻译成你使用的任何sql数据库)

我建议使用MySql的日期函数,您可以看到here

UPDATE TABLE1 SET status='Expired' WHERE DATEDIFF(CURDATE(), date) < 0

答案 3 :(得分:0)

在对我有用的代码下面,仅一行更新查询将更新少于当前日期的

UPDATE TABLE_NAME SET status='expired' WHERE DATEDIFF(date, CURDATE()) < 0

谢谢。