如何模拟SQL Server的两个日期处理函数数据库教程 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

    server|函数

//在PHP中处理日期非常不方便,比如求两个日期之间相差的月份?该怎么办呢?

    //文件名:date.inc.php3

    //在使用这两个函数前,要先将日期或日期时间转换成timestamp类型,

如何模拟SQL Server的两个日期处理函数数据库教程

    //如:

    //$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;

    }

    }

最新文章