编写where子句查询

时间:2016-04-18 22:56:44

标签: sql sql-server where

我正在尝试创建一个查询,该查询将显示已售出并在市场上销售不到6周的属性。在清单表中,有BeginListDate和EndList Date。

So far my WHERE statement looks like
WHERE SaleStatus.Salestatus = 'Sold' AND DATEDIFF(YEAR,BeginListDate, EndListDate) >42

但该查询不正确。我只是对如何编写where语句感到困惑,因为它只考虑市场上不到6周的那些语句。

2 个答案:

答案 0 :(得分:0)

只是详细说明@ JamieD77的正确评论......

你的情况:

DATEDIFF(YEAR,BeginListDate, EndListDate) >42

表示“BeginListDateEndListDate之间的年数大于42”。这是一个很长的列表期间的地狱。你说你正在寻找的列表期限少于42天,所以@ JamieD77建议:

Datediff(day,BeginListDate, EndListDate) < 42 

是正确的方法。这表示“beginlistdateendlistdate之间的天数小于42。”

这里的差异是DatePart,因为@squillman建议从Year更改为Day以及不平等本身。您想要Less Than<

答案 1 :(得分:0)

提示,但取决于您在报告或项目中的偏好。

这个例子,如果startdate和endate都在同一个日历周,那么周的返回值将为0.

选择DATEDIFF(周,getdate(),getdate()+ 7)

它已经考虑了基于系统的周日开始。