【问题标题】:Fiscal Year from Current Date自当前日期起的财政年度
【发布时间】:2020-10-06 12:30:56
【问题描述】:

我正在使用 SSMS/SSRS2012 工作报告来捕获当前财政年度的所有工作时间,为此目的是 10 月 1 日至 9 月 30 日。

我正在寻找一个包含以下内容的案例陈述: 如果当前月份 = 10 则 @FYStart = 当前年份

当我查询SELECT GETDATE() 时,格式为:2020-06-16 15:24:57.637

我尝试了以下方法,但只成功了一半。

SELECT CASE WHEN DATEPART(MONTH,(CAST(getdate() AS INT)))>09 THEN YEAR(CAST(getdate() AS INT)) ELSE DATEADD(YEAR,-1,(CAST(getdate() AS INT))) END

这个结果给了我2019-06-17 00:00:00.000,这是朝着正确方向迈出的一步,但是如果我将月份更改为已经过去的月份,

SELECT CASE WHEN DATEPART(MONTH,(CAST(getdate() AS INT)))>03 THEN YEAR(CAST(getdate() AS INT)) ELSE DATEADD(YEAR,-1,(CAST(getdate() AS INT))) END

我得到这个结果:1905-07-14 00:00:00.000

这里显然出了点问题,但我不确定到底是什么。我认为这与数据类型有关,但我不确定要检查什么/从哪里开始。

【问题讨论】:

    标签: sql date type-conversion ssrs-2012


    【解决方案1】:

    除非我忽略了某些东西,否则它不只是......那么简单

    SELECT CASE WHEN MONTH(getdate()) <10
            THEN YEAR(getdate()) -1
            ELSE YEAR(getdate())
            END
    

    【讨论】:

      【解决方案2】:

      因此,据我所知,您正在尝试将年份(作为整数)与今天的日期隔离并将其存储在 @FYStart 中。如果今天的日期在 10 月之前,你想分配给去年,如果是 10 月或更晚,就分配给今年,对吗?

      如果是这样,试试这个:

      DECLARE @FYStart int
      SET @FYStart = (
          SELECT CASE WHEN DATEPART(MONTH, GETDATE()) < 10
              THEN DATEPART(YEAR, DATEADD(YEAR, -1, GETDATE())) -- last year
          ELSE DATEPART(YEAR, GETDATE())  -- this year
          END
          )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-10
        • 2012-02-11
        • 1970-01-01
        相关资源
        最近更新 更多