模拟SQLSERVER的两个函数:dateadd(),datediff()
2023-06-13 09:13:44 时间
<?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
**************结束**************/
functiondateadd($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
表示:要比较的两个日期
返回类型:数值
**************结束*(*************/
functiondatediff($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;
}
?>
//文件名: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
**************结束**************/
functiondateadd($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
表示:要比较的两个日期
返回类型:数值
**************结束*(*************/
functiondatediff($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;
}
?>
相关文章
- SQL Server重新定义你的数据库(sqlserver重命名)
- 排查SQLServer服务无法启动的原因(sqlserver服务无法启动)
- SQL Server试题:取得更多的成功(sqlserver试题)
- 监控SQLServer:及时发现系统架构中的异常(监控sqlserver)
- 日志深入了解SQL Server日志:从查看到管理(查看sqlserver)
- 架构未来:实现云端SQLServer智能运维(云端sqlserver)
- 的函数利用SQLServer内置函数提高操作效率.(sqlserver里面)
- 远程访问SQLServer:突破远程表的界限(sqlserver远程表)
- 使用SQLServer加速数据处理(sqlserver跑数据)
- 使用SQLServer查询数据的挫折─查询速度缓慢的痛苦折磨(sqlserver读取慢)
- 优雅的SQLServer表筛选技巧(sqlserver表筛选)
- SQL Server慢速日志:精准定位网站性能瓶颈(sqlserver慢日志)
- 挖掘SQLServer的“微整形”秘密(sqlserver微整形)
- 探索SQLServer中获取周报表的简单方法(sqlserver周函数)
- 利用SQL Server实现数据表同步(sqlserver同步表)
- sqlserver 在内的数据库系统的使用实践使用SQLServer等数据库系统的实践经验(sqlserver 包括)
- SQL Server中列属性的研究(sqlserver列属性)
- 基于SQLServer的函数编写实践(sqlserver写函数)
- 从SQLServer谈兼容性问题(sqlserver兼容性)
- 深入浅出:掌握SqlServer交互(sqlserver交互)
- SQL Server 2008 R2 带来的强大管理功能(sqlserver r2)
- what深入了解SQLServer:强大的数据库利器(sqlserver is)
- sqlserver批量删除存储过程和批量修改存储过程的语句