我正在尝试创建一个查询,该查询将显示已售出并在市场上销售不到6周的属性。在清单表中,有BeginListDate和EndList Date。
So far my WHERE statement looks like
WHERE SaleStatus.Salestatus = 'Sold' AND DATEDIFF(YEAR,BeginListDate, EndListDate) >42
但该查询不正确。我只是对如何编写where语句感到困惑,因为它只考虑市场上不到6周的那些语句。
答案 0 :(得分:0)
只是详细说明@ JamieD77的正确评论......
你的情况:
DATEDIFF(YEAR,BeginListDate, EndListDate) >42
表示“BeginListDate
和EndListDate
之间的年数大于42”。这是一个很长的列表期间的地狱。你说你正在寻找的列表期限少于42天,所以@ JamieD77建议:
Datediff(day,BeginListDate, EndListDate) < 42
是正确的方法。这表示“beginlistdate
和endlistdate
之间的天数小于42。”
这里的差异是DatePart
,因为@squillman建议从Year
更改为Day
以及不平等本身。您想要Less Than
,<
。
答案 1 :(得分:0)
提示,但取决于您在报告或项目中的偏好。
这个例子,如果startdate和endate都在同一个日历周,那么周的返回值将为0.
选择DATEDIFF(周,getdate(),getdate()+ 7)
它已经考虑了基于系统的周日开始。