我需要帮助在SQL服务器中编写这个SAS代码。我有兴趣知道如何在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 :(得分:2)
SQL Server没有日期类型,只有日期时间。因此没有必要使用任何datepart函数,你可以简单地把'01Dec2013'相当于'01Dec2013 00:00:00'。在sql server中有一个datepart函数,它从日期时间返回一个单位,例如年,月,日。
sql server中的where子句应该类似于:
where
startdatum<'01DEC2013'
and
( enddate is null
or
enddate>='01DEC2013')