2014-04-01 47 views
0

我想在最后更改标准。到过去的20天。 是这个? (DateTime.Now.Year) - 20?如何在此SQL查询中显示过去20天

sqlT1 = "SELECT ROW_NUMBER() OVER(ORDER BY ID_KEY DESC) AS RN,* From(Select distinct f.FACILITY_NAME, ID_KEY, [BATCH] AS column1, [IMPORTDATE], [DATEBILLED], [RX], [DATEDISPENSED], [DAYSUPPLY], [PAYTYPE], [NPI], [PHYSICIAN], [COST], [QUANTITY], [MEDICATION], A.[NDC], " + 
         " case when (COST > 0 AND DAYSUPPLY > 0) then (COST/DAYSUPPLY) * 30 else 0 end [30DayCost] , [PATIENTNAME], [ROUTEOFADMIN], [INVOICECAT], [COPAY], [BRAND], [TIER], [SKILLLEVEL], [STAT] STATUS, [LASTTASKDATE],SEQNO, 'please bring to the attention of the administrator.' SUBST_INSTRUCTIONS , f.FACILITY_ID " + 
         " FROM [LMI].[T_CHARGES] A Left Outer Join PBM.FACILITY f on A.FACILITYNPI = f.FACILITY_NPI " + 
         " Where COST > 500 " + 
         " AND [TIER] = 'T1' and month(A.DATEDISPENSED) = " + DateTime.Now.Month + " and year(A.DATEDISPENSED) = " + DateTime.Now.Year + "" + 
         sqlWhere + " AND f.FACILITY_ID IN (" + selected + ")"; 
+0

这看起来很容易受到SQL注入攻击。你知道那些是对的吗? –

+0

SQL注入与此没有任何共同之处。 – Metaphor

回答

0

要获得之日起20天前,你可以使用SQL函数DATEADD:

WHERE A.DATEDISPENSED >= DATEADD(dd,-20,GetDate()) 
1

好,我不知道要改变你的代码你,但通常在SQL使用getdate()获得今天的日期,并使用dateadd(d,-20,getdate())拿到20日前所以使用

(T-SQL) :

testingdate between dateadd(d,-20,getdate()) and getdate() 

您的where子句

+0

[dateadd link](http://technet.microsoft.com/en-us/library/ms186819.aspx)和[getdate()](http://technet.microsoft.com/zh-cn/library/ms188383的.aspx) – RadioSpace

相关问题