如何做时间判断(日期加减问题)

qfljm 2003-10-10 10:00:28
我有一数据表info,字段如下:
ID_______自动ID
NAME_____标题名
BDAY_____保留天数varchar(10)
ADDTIME__入库时间int(11)
-----------------------------------------------------------------
BDAY存入的是数字如5天就是数字5
ADDTIME存入的是time()

--------------------------------------------------------
我想以"保留天数"做为判断删除过期的数据,.SQL如何写?
也就是"当前时间"减"入库时间">"保留天数"则删除.
主要是不清楚如何做时间的加减计算.

最好能给上一点注释,以便让我理解学习,谢谢!!!!!

...全文
134 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
indeed 2003-10-10
  • 打赏
  • 举报
回复
study....
indeed 2003-10-10
  • 打赏
  • 举报
回复
直接用SQL可能不太好实现,自己写代码可以很简单的实现啊
<?
...数据库连接代码略.....

$sql = "select * from info";
$res = mysql_query($sql,$conn); //$conn为数据库连接
while($row = @mysql_fetch_arra($res))
{
/***假设你的ADDTIME的形式为2003-10-10***/
$oldYear = substr($row[ADDTIME],0,4);
$oldMonth = substr($row[ADDTIME],5,2);
$oldDay = substr($row[ADDTIME],8,2);
$tmpDays = (mktime(0,0,0,date("m"),date("d"),date("Y"))-mktime(0,0,0,$oldMonth,$oldDay,$oldYear))/(24*3600);
if($tmpDays > $row[BDAY])
{//大于保留天数,从数据库中删除数据
$sql = "delete from info where id='$row[ID]'";
$del_res = mysql_query($sql,$conn); //$conn为数据库连接
}
}

...关闭数据库连接...
?>
xuzuning 2003-10-10
  • 打赏
  • 举报
回复
mysql
delete from info where UNIX_TIMESTAMP()-ADDTIME > BDAY*86400

UNIX_TIMESTAMP() 返回一个Unix时间戳记(从'1970-01-01 00:00:00'GMT开始的秒数)。与php的time()相同
86400 24*60*60 一天的秒数

若考虑到mysql数据库不与php在同一服务器上时可能有的时间差。则
mysql_query("delete from info where ".time()."-ADDTIME > BDAY*86400");

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧