DATEPART功能分配

时间:2017-11-18 17:35:35

标签: sql sql-server inner-join getdate datepart

enter image description here

我有桌子今天和昨天订购订单(18,17)

我需要找到那些结果。

select A.C_Name 
from Customer_Table A
 inner join
 Order_Table O
   On A.C_ID=O.C_ID
   where DATEPART(DAY,Order_Date)=GetDATE() and
  DATEPART(DAY,Order_Date)=GETDATE()-1

我没有得到上述查询的结果。

1 个答案:

答案 0 :(得分:2)

如果您想要今天和昨天的订单,那么这应该足够了:

where Order_Date >= dateadd(day, -1, cast(getdate() as date))

(这假设没有未来的订单日期,这似乎是合理的)。

由于多种原因,您的查询很乱。 datepart()返回一个整数,并将其与日期进行比较。仅查看日期的“日期”部分将在本月的第一天起作用。而且,getdate() - 尽管它的名字 - 有时间成分,所以直接平等是不合适的。