模拟SQLSERVER的两个函数:dateadd(),datediff()

  <?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;

  }

  ?>