我有一SQL语句是这样的,如下:
select * from ov_sal_ord_detail
WHERE ( ov_sal_ord_detail.sheet_kind = 'SAL04' ) 
AND ( Convert(char(10),ov_sal_ord_detail.sheet_date,121)>='2012-06-01'
 And Convert(char(10),ov_sal_ord_detail.sheet_date,121)<='2012-06-30' And 
ov_sal_ord_detail.part_item_no<='ZZZ' And ov_sal_ord_detail.audit_sw like '%' ) 
意思是:查询2012-6-1至2012-6-30范围的所有销售订单我现在问题和要求:想查询最近7天的所有数据,即查询当前日期,然后往前推7天,这一时间范围内的订单信息。
我使用的是getdate()函数获取当前日期,但是向前推7天的一至不成功(即起始日期不成功),查询出来是所有时间范围内的订单,所以想请教各位我的起始日期范围应该如何设置,谢谢!
我目前的语句如下:但是不成功
select * from ov_sal_ord_detail
WHERE ( ov_sal_ord_detail.sheet_kind = 'SAL04' ) 
AND ( Convert(char(10),ov_sal_ord_detail.sheet_date,121)>='(trunc(getdate()-7))'
 And Convert(char(10),ov_sal_ord_detail.sheet_date,121)<='getdate()' And 
ov_sal_ord_detail.part_item_no<='ZZZ' And ov_sal_ord_detail.audit_sw like '%' ) 出错位置:ov_sal_ord_detail.sheet_date,121)>='(trunc(getdate()-7))'此处想请教各位我应该如何修改?
此处成功:Convert(char(10),ov_sal_ord_detail.sheet_date,121)<='getdate()' 请各位高手多多指教,不胜感激

解决方案 »

  1.   


    >=dateadd(dd,-7,getdate())
      

  2.   

    AND ov_sal_ord_detail.sheet_date>=CONVERT(VARCHAR(10),DATEADD(DAY,-7,GETDATE()),120)
    And ov_sal_ord_detail.sheet_date < CONVERT(VARCHAR(10),DATEADD(DAY,1,GETDATE()),120)字段用CONVERT影响性能
      

  3.   

    >=convert(varchar(10),getdate()-7,120) 这样更合理 
      

  4.   

    由于不能编辑帖子,我另补充一个问题我的语句如下
    SELECT * FROM uf_scm_days_calcqty_partwh('dateadd(dd,-20,getdate())',
    'getdate()','','zzz','','ZZZ','%','0') a 由于使用的是在FROM后面直接函数来的,经过多次测试,括号中的时间一定要有单引号,如果不录入引号语句出错,但是一加引号后,就出来所有数据,而不是我希望的当前时间减去20天的时间。
    请问'dateadd(dd,-20,getdate())'这儿我应该如何修改,谢谢!
      

  5.   

    你这个dateadd(dd,-20,getdate())就是20天以前了。你看看你的函数写的有没有问题