详解数据库中DATEDIFF用法以及PHP实现的datediff方法
2017-02-22| 程成| 830| 1| SQL Server

写代码中,遇到了这样一条Sql语句where DateDiff(d,addtime,getdate())<7,后发现DateDiff()是一个数据库方法,作用是返回两个日期之间的时间,这里的解释是返回七天之内的数据。而且Sql server和Mysql中都有这个方法,不过用法区别。如何使用DateDiff()方法,下面是对于DateDiff的一些理解:


1、Sql Server中的DATEDIFF


DATEDIFF(datepart,startdate,enddate),其中datepart可以是年月日时分秒等等,具体可以查具体使用。注意这里是三个参数,并且返回值根据datepart变化而变化,前小后大为返回正数。


2、Mysql中的DATEDIFF


官方解释是返回两个日期之间的天数,例子:DATEDIFF(date1,date2)。两个日期参数,date1减去date2的天数,可以为负数,前大后小为正数。


区别:


1、参数数量不同

2、根据参数日期顺序,返回值正负算法不同



通过比较,还是sql server中的datediff方法更加强大和灵活。然后查了下php类似的方法,发现没有官方提供,写了个类似于sql server的datediff方。


php中的datediff方法:


function DateDiff($part, $begin, $end){
        $diff = strtotime($end) - strtotime($begin);
        switch($part){    
            case "y": $retval = bcdiv($diff, (60 * 60 * 24 * 365)); break;
            case "m": $retval = bcdiv($diff, (60 * 60 * 24 * 30)); break;
            case "w": $retval = bcdiv($diff, (60 * 60 * 24 * 7)); break;
            case "d": $retval = bcdiv($diff, (60 * 60 * 24)); break;
            case "h": $retval = bcdiv($diff, (60 * 60)); break;
            case "n": $retval = bcdiv($diff, 60); break;
            case "s": $retval = $diff; break;
        }
        return $retval;
}


感觉很实用的一个方法,以后应该会用到吧!



×
作者:程成
QQ:492245711