自当前日期起的会计年度

q5iwbnjs  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(350)

我正在使用ssms/ssrs2012 working on report来捕获当前会计年度(即10月1日至9月30日)的所有工作时间。
我正在寻找一个案例陈述,说明如下:如果当前月份<10(10月),那么@fystart=last year如果当前月份>=10那么@fystart=current year
当我询问 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 很明显这里出了点问题,但我不确定到底是什么。我认为这是数据类型的问题,但我不确定要检查什么/从哪里开始。

mpbci0fu

mpbci0fu1#

因此,从我收集的信息来看,您正在尝试将年份(作为整数)与今天的日期隔离开来,并将其存储在 @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
    )
c3frrgcw

c3frrgcw2#

除非我忽略了一些事情,它不只是像。。。

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

相关问题