2017-04-13 194 views
-2

在SQL服务器中,我想显示我的报告的日期和时间段。在WHERE子句中的时间周期低于:Sql如何从5周开始日期和结束日期

WHERE EventDate >= dateadd(wk, datediff(wk, 0, getdate()) -5, 0) 
    AND EventDate <= dateadd(wk, datediff(wk, 0, getdate()), 0) 

哪能格式显示的:“2017年3月26日 - 2017年4月13日”

+1

标签您正在使用的数据库管理系统。这些功能是产品特定的。 – jarlh

+0

添加标签sql-server – Manngo

回答

1

如果我正确理解你的问题,你希望从未来的5周前到5周。

你可以尝试以下方法:

-- etc 
WHERE EventDate BETWEEN dateadd(week,-5,getdate()) AND dateadd(week,5,getdate()); 

如果你想显示的日期,你可以试试这个:

SELECT format(dateadd(week,-5,getdate()),'d MMM yyyy') +' - '+ format(dateadd(week,5,getdate()),'d MMM yyyy'); 
+0

是的,但我想在我的报告中显示这5周的开始日期和结束日期。如果我把这个日期放在我的tablix中,那么tablix会显示每个日期值。我只会开始和结束。例如:2017年3月26日 - 2017年4月13日 –

+0

我不认为这就是你在问题中所暗示的。你想在'WHERE'子句中使用数值,还是要'选择'它们? – Manngo

+0

我想选择他们,对我的问题抱歉我的不好解释 –

0

如果你想要做的就是看日期,只需使用选择:

select dateadd(wk, datediff(wk, 0, getdate()) -5, 0) 
    , dateadd(wk, datediff(wk, 0, getdate()), 0) 

如果你想看到的格式为: “2017年3月26日 - 2017年4月13日”:

select cast(dateadd(wk, datediff(wk, 0, getdate()) -5, 0) as varchar(20)) + 
    ' - ' + 
    cast(dateadd(wk, datediff(wk, 0, getdate()), 0) as varchar(20)) 
+0

感谢它,bur如果我插入到我的tablix然后它并没有停止报告。它出现运行时错误 –

+0

我无法评论Tablix,我从来没有使用过它。我建议你在适当的地方提出另一个问题。同时,如果这回答了您的问题,请接受答案。谢谢! – User632716

相关问题