我正在开发一个项目,其中需要使用当前日期检查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' ";
}}
答案 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
谢谢。