2014-01-31 53 views
0

我需要幫助在SQL服務器中編寫SAS代碼。我很想知道如何在SQL Server中使用datepart。我包含了整個查詢,因爲它可能有助於理解我在做什麼。如何在SQL SERVER中使用datepart?

如何重寫包含datepart(寫入SAS)的最後一個where子句到SQL Server?

create table step1 as 

SELECT a.*,ar.Productid,ar.pricelistid 
    FROM AB a 
inner join BB ar 
    on a.someid = ar.someid 

; 



create table step2 as 

SELECT a.*, ar.price 
    FROM step1 a 
inner join XX ar 
    on a.Productid = ar.Productid 
      and a.pricelistid = ar.pricelistid 

      where datepart(startdatum)< '01DEC2013'd and 
(datepart(enddate) = . or datepart(enddate)>= '01DEC2013'd) 

;

+0

什麼startdatum和結束日期的類型:我猜想非可空DateTime和可空的日期時間,但是...你能否證實? –

+0

非空... – user3197575

+0

那麼'datepart(enddate)=。'是什麼意思在SAS? –

回答

2

SQL Server沒有日期類型,只有日期時間。因此不需要使用任何日期部分功能,只需將'01Dec2013'相當於'01Dec2013 00:00:00'即可。在sql server中有一個datepart函數,它從日期時間返回一個單元,例如一年或一個月或一天。

你在哪裏在SQL Server條款應該是這個樣子:

where 
    startdatum<'01DEC2013' 
    and 
    (enddate is null 
     or 
     enddate>='01DEC2013')