首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

这2句SQL日期函数小弟我特别混淆,哪位高手来帮小弟我下让小弟我不迷糊了

2013-09-04 
这2句SQL日期函数我特别混淆,谁来帮我下让我不迷糊了本帖最后由 lin3360827 于 2013-08-21 12:12:44 编辑

这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'

热点排行