写代码中,遇到了这样一条Sql语句where DateDiff(d,addtime,getdate())<7,后发现DateDiff()是一个数据库方法,作用是返回两个日期之间的时间,这里的解释是返回七天之内的数据。而且Sql server和Mysql中都有这个方法,不过用法区别。如何使用DateDiff()方法,下面是对于DateDiff的一些理解:
DATEDIFF(datepart,startdate,enddate),其中datepart可以是年月日时分秒等等,具体可以查具体使用。注意这里是三个参数,并且返回值根据datepart变化而变化,前小后大为返回正数。
官方解释是返回两个日期之间的天数,例子:DATEDIFF(date1,date2)。两个日期参数,date1减去date2的天数,可以为负数,前大后小为正数。
1、参数数量不同
2、根据参数日期顺序,返回值正负算法不同
通过比较,还是sql server中的datediff方法更加强大和灵活。然后查了下php类似的方法,发现没有官方提供,写了个类似于sql server的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; }
感觉很实用的一个方法,以后应该会用到吧!