繁体   English   中英

自当前日期起的财政年度

[英]Fiscal Year from Current Date

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

我正在寻找一个案例陈述,其中包含以下内容:如果当前月份 < 10(10 月)然后 @FYStart = 去年如果当前月份 >= 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

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

因此,根据我的收集,您正试图将年份(作为整数)与今天的日期隔离并将其存储在@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
    )

除非我忽略了某些东西,否则它不只是像...

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM