【问题标题】:Need to get data based on Beginning Date input需要根据开始日期输入获取数据
【发布时间】:2011-12-08 17:39:00
【问题描述】:

我正在尝试根据我的开始日期输入检索数据。如果用户选择开始日期为 11-27-2011,结束日期为 12/04/2011,那么我的数据集的返回日期将是整个 11 月。如果他们选择 10/01/2011 的开始日期,那么我的数据集将返回从 1 月 1 日到当前日期的数据。

我已经设法让第 2/3 个语句正常工作,但是当我尝试添加过滤器以检索 1 月 1 日的数据时,它会出错(查询中的第一个 IF 语句)。第一个 IF 语句检查 @BeginningDate 是否小于前一个月。如果是那么它应该检索年份数据,否则它会从那里继续。这是我对日期的查询:

Declare @startdate  datetime
Declare @enddate  datetime
Declare @BeginningDate datetime

set @BeginningDate = '12-01-2011'

IF Month(@BeginningDate) < (Month(GETDATE())-1)
BEGIN
set @startdate = DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)
set @enddate = dateadd(day, datediff(day, 0, getdate()), 0)
END

IF Month(@BeginningDate) = (Month(GETDATE())-1)
BEGIN
set @startdate = dateadd (mm,-1,DATEADD(dd,-(DAY(DATEADD(mm,1,convert(varchar(10),getdate(),111)))-1),DATEADD(mm,0,convert(varchar(10),getdate(),111))))--BEGINNING OF PRIOR MONTH
set @enddate =DATEADD(dd,-1,DATEADD(mm, DATEDIFF(m,0,convert(varchar(10),getdate(),111)),0))--END OF PRIOR MONTH
END

ELSE
IF Month(@BeginningDate) = (Month(GETDATE())
BEGIN
set @startdate = dateadd(month, datediff(month, 0, dateadd(day, datediff(day, 1, getdate()), 0)), 0)--BEGINNING OF CURRENT MONTH
set @enddate = dateadd(day, datediff(day, 0, getdate()), 0)--THROUGH CURRENT MONTH (TODAY)
END

正如我所说,我可以设法让查询与其中两个语句一起使用,但是当我添加第一个 IF 然后对其进行解析时,我收到以下消息:

第 15 行是最后一个 ELSE 语句中的“BEGIN”。我是否试图做太多的 IF/ELSE 语句?就这么多日期参数以及在 IF/ELSE 中使用它们而言,我以前从未这样做过。

提前致谢!

【问题讨论】:

    标签: sql sql-server-2008 date


    【解决方案1】:

    看起来IF Month(@BeginningDate) = (Month(GETDATE()) 行缺少一个 )

    改成这个

    IF Month(@BeginningDate) = (Month(GETDATE())) 看看现在能不能用

    【讨论】:

    • 谢谢@jlg!有时似乎很容易!
    【解决方案2】:

    我相信你的括号不匹配 - 在你的最后一个块中,尝试

    IF Month(@BeginningDate) = (Month(GETDATE()))
    

    IF Month(@BeginningDate) = Month(GETDATE())
    

    而不是最终的

    IF Month(@BeginningDate) = (Month(GETDATE())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-28
      相关资源
      最近更新 更多