2017-04-13 154 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

相關問題