日期:2014-05-17  浏览次数:20558 次

这2句SQL日期函数我特别混淆,谁来帮我下让我不迷糊了
本帖最后由 lin3360827 于 2013-08-21 12:12:44 编辑
第一句:
DATEDIFF (DAY, c.c_use_dt ,@开始日期__datetime)<=0
 DATEDIFF (DAY,c.c_use_dt ,@结束日期__datetime) >=0 
第二句:
 datediff(day,@开始日期__datetime ,c_au_dt) >=0
 datediff(day,@结束日期__datetime ,c_au_dt) <=0



我知道datediff(day,参数1,参数2)  是后减去前面相差几天
但是我现在超迷在>0怎么了
                <0怎么了?

数据库里肯定有比输入的参数大的和小的。
谁能给我解答下我参数位置一调换,大小一调换就迷了
正数大于0了怎么了
负数大于0怎么了

正数小于0怎么了
负数小于0怎么了

虽然我知道固定格式大于小于0怎么了但是我不理解啊

------解决方案--------------------
第一句:
DATEDIFF (DAY, c.c_use_dt ,@开始日期__datetime)<=0
c.c_use_dt >= @开始日期__datetime

DATEDIFF (DAY,c.c_use_dt ,@结束日期__datetime) >=0 
c.c_use_dt <= @结束日期__datetime

第二句:
datediff(day,@开始日期__datetime ,c_au_dt) >=0
@开始日期__datetime <= c_au_dt

datediff(day,@结束日期__datetime ,c_au_dt) <=0
@结束日期__datetime >= c_au_dt

------解决方案--------------------
引用:
还是这个清晰啊,别的我都看晕乎了

--#2楼的写法有BUG。参考下面的SQL
--这样写,一是逻辑看着清晰,二是可以用到c_use_dt字段的索引
第一句:
DATEDIFF (DAY, c.c_use_dt ,@开始日期__datetime)<=0
DATEDIFF (DAY,c.c_use_dt ,@结束日期__datetime) >=0

c.c_use_dt <= convert(char(10), @开始日期__datetime, 120)+' 23:59:59.997'
c.c_use_dt >= convert(char(10), @开始日期__datetime, 120)

第二句:
 datediff(day,@开始日期__datetime ,c_au_dt) >=0
 datediff(day,@结束日期__datetime ,c_au_dt) <=0

 c.c_use_dt >= convert(char(10), @开始日期__datetime, 120)
 c.c_use_dt <= convert(char(10), @开始日期__datetime, 120)+' 23:59:59.997'