DateAdd综合症

时间:2014-11-13 21:19:32

标签: sql reporting-services ssrs-2008

我使用了大量的关键字来搜索有关此内容的信息,但每次点击输入时都没有弹出,这对我来说有点意外。

我的问题是:

我的查询中有一些功能可以在一个销售周的一个月内返回给我一个特定的时间区域。它看起来像这样:

DECLARE @StartDate DATETIME, @EndDate DATETIME
SET @StartDate= **DATEADD(wk, DATEDIFF(wk, 6, GETDATE()), 6)**
SET @EndDate= **DATEADD(wk, DATEDIFF(wk, 6, GETDATE()), 12)**

EXEC dbo.lvs_SalesSummaryRpt @EndDate =@EndDate, @StartDate = @StartDate

我整个月都有一个:

DECLARE @StartDate DATETIME, @EndDate DATETIME
SET @StartDate=**CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(GETDATE())-1),GETDATE()),101)**
SET @EndDate=**DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+1,0))**

EXEC dbo.lvs_SalesSummaryRpt @EndDate =@EndDate, @StartDate = @StartDate

现在我已加粗的区域,我已经复制并粘贴到SSRS中的新数据集中的选区中,使用这些新数据集我可以应用表达式= First(Fields!BegOfWeek.Value, " WeekDS")这样它就可以回到我看他们所看到的任何月份的时间表。这很棒,一天也一样。我不能为我的生活弄清楚如何做几天,特别是这个月的第六和第七。

我对这种语法非常陌生,而且我有其他例子的唯一原因是因为它们是我提供的,我很难掌握这些日期函数以及如何让它们到达工作,现在感觉非常愚蠢。

任何人都可以帮助我吗?

由于格式不正确,我无法对代码进行粗体显示,因此请注意这些区域被*&#39> 包围

我想我可以提供更多信息。因此,我今天拥有的数据集是:

DECLARE @StartDate DATETIME, @EndDate DATETIME
SET @StartDate='11/6/2014'
SET @EndDate='11/7/2014'

EXEC dbo.lvs_SalesSummaryRpt @EndDate =@EndDate, @StartDate = @StartDate

现在我希望你能看到我的困惑,我不能使用11/6/2014和11/7/2014,因为那些是静态日期,我需要这个动态到他们想要的月份。

1 个答案:

答案 0 :(得分:1)

我已经回答了我确实相信的问题,因为它现在正在按原样运作。

SELECT DATEADD(mm,DATEDIFF(mm,0,GETDATE()),5) as BegDay

SELECT DATEADD(mm,DATEDIFF(mm,0,GETDATE()),6) as EndDay

这几天真的很乏味,但我感觉越来越舒服。我需要处理的事情并不是每当我遇到新事物时都会把F搞得一团糟。我会说谢谢.....但是谁呢?谢谢!

其他人,我希望这会有所帮助,但我怀疑是否有人会遇到这个问题。我是个新手。

只是为了它的废话,我还必须将其转换为我不想显示小时的格式。我这样做了一天一个月。

日:

    SELECT Convert(date,GETDATE()) as BegDay,
    Convert(date,dateadd(d,1,GETDATE())) as EndDay

月:

Select CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(GETDATE())-1),GETDATE()),101) as BegofMonth,
CONVERT(Date,DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+1,0))) as EndofMonth
相关问题