注册
 找回密码
 注册
江西广告网
查看: 286|回复: 0
打印 上一主题 下一主题

如何模拟SQL Server的两个日期处理函数

[复制链接]

该用户从未签到

1
跳转到指定楼层
发表于 2009-1-17 08:33:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
  //在PHP中处理日期非常不方便,比如求两个日期之间相差的月份?该怎么办呢?    //文件名:date.inc.php3    //在使用这两个函数前,要先将日期或日期时间转换成timestamp类型。    //如:    //$today=mktime(0,0,0,date("m"),date("d"),date("Y"));       /****模拟sqlserver中的dateadd函数*******    $part 类型:string    取值范围:year,month,day,hour,min,sec    表示:要增加的日期的哪个部分    $n 类型:数值    表示:要增加多少,根据$part决定增加哪个部分    可为负数    $datetime类型:timestamp    表示:增加的基数    返回 类型:timestamp    **************结束**************/    function dateadd($part,$n,$datetime){    $year=date("Y",$datetime);    $month=date("m",$datetime);    $day=date("d",$datetime);    $hour=date("H",$datetime);    $min=date("i",$datetime);    $sec=date("s",$datetime);    $part=strtolower($part);    $ret=0;    switch ($part) {    case "year":    $year =$n;    break;    case "month":    $month =$n;    break;    case "day":    $day =$n;    break;    case "hour":    $hour =$n;    break;    case "min":    $min =$n;    break;    case "sec":    $sec =$n;    break;    default:    return $ret;    break;    }    $ret=mktime($hour,$min,$sec,$month,$day,$year);    return $ret;    }       /****模拟sqlserver中的datediff函数*******    $part 类型:string    取值范围:year,month,day,hour,min,sec    表示:要增加的日期的哪个部分    $date1,$date2 类型:timestamp    表示:要比较的两个日期    返回 类型:数值    **************结束*(*************/    function datediff($part,$date1,$date2){    //$diff=$date2-$date1;    $year1=date("Y",$date1);    $year2=date("Y",$date2);    $month2=date("m",$date2);    $month1=date("m",$date1);    $day2=date("d",$date2);    $day1=date("d",$date1);    $hour2=date("d",$date2);    $hour1=date("d",$date1);    $min2=date("i",$date2);    $min1=date("i",$date1);    $sec2=date("s",$date2);    $sec1=date("s",$date1);       $part=strtolower($part);    $ret=0;    switch ($part) {    case "year":    $ret=$year2-$year1;    break;    case "month":    $ret=($year2-$year1)*12 $month2-$month1;    break;    case "day":    $ret=(mktime(0,0,0,$month2,$day2,$year2)-mktime(0,0,0,$month1,$day1,$year1))/(3600*24);    break;    case "hour":    $ret=(mktime($hour2,0,0,$month2,$day2,$year2)-mktime($hour1,0,0,$month1,$day1,$year1))/3600;    break;    case "min":    $ret=(mktime($hour2,$min2,0,$month2,$day2,$year2)-mktime($hour1,$min1,0,$month1,$day1,$year1))/60;    break;    case "sec":    $ret=$date2-$date1;    break;    default:    return $ret;    break;    }    return $ret;    }       } <
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表