- 用过mssql的朋友应该了解datediff函数了,在mssql中,该函数的第一个参数是开始日期,第二个是结束日期,开始日期应该在结束日期之前,这样算出来的结果是大于或等于0的一个数,反之是一个负数,但在MySQL中就完全相反,你若想得到一个正数结果,那第一个日期应该填结束日期,第二个参数应该填开始日期,很奇葩的设计。
定义和用法
DATEDIFF() 函数返回两个日期之间的天数。
语法
DATEDIFF(date1,date2)
date1 和 date2
注释:只有值的日期部分参与计算。
实例
例子 1
使用如下 SELECT 语句:
SELECT DATEDIFF('2008-12-30','2008-12-29') AS DiffDate
结果:
DiffDate |
1 |
例子 2
使用如下 SELECT 语句:
SELECT DATEDIFF('2008-12-29','2008-12-30') AS DiffDate
结果:
DiffDate |
-1 |
我想说的是:在使用DIFFDATE()的时候,我们总是想要使用绝对值
但是在网上是没有的,或者说是想要分情况
我在这里提出一两个建议和思路:可以在sql中case when if else end分情况查询
也可以从前台传递过来一个参数,作为判断是进还是出
if(fx.equal('1')){
sql.append('and datediff(shijian,'"+time+"')<="+ tianshu +" and datediff(shijian,'"+time+"')>0')
}else{
sql.append('and datediff('"+time+"',shijian)<="+ tianshu +" and datediff('"+time+"',shijian)>0')
}