根据yyyymmdd检索上一个fytd开始日期和结束日期

时间:2018-06-13 06:56:56

标签: sql sql-server tsql

我搜索并尝试了各种查询但仍然卡住了。非常感谢这方面的帮助。任何人都可以建议如何根据yyyymmdd格式的日期检索前2个金融ytd的开头?

我有一个每日报告,如果日期是yyyymmdd,那么我想检索最后2个财政年度的开始日期。例如,如果日期是20180612,那么我想从20160701获得日期。

2 个答案:

答案 0 :(得分:0)

SET @fytd = CONVERT(VARCHAR(10),DATEFROMPARTS ( DATEPART(yyyy, @daily) - 2, 7, 1 ),112);--2016-01-01
SET @fytd = CONVERT(VARCHAR(10),DATEFROMPARTS ( DATEPART(yyyy, @daily) - 1, 7, 1 ),112);--2017-07-01

答案 1 :(得分:0)

您的查询应该像

declare @daily varchar(100)= '20180403', @fytd varchar(100), @fytd2 varchar(100);
SELECT 
    @fytd = 
        CONVERT(VARCHAR(10), DATEADD(MONTH, 6,DATEADD(YEAR,DATEDIFF(YEAR, 0, DATEADD(MONTH, -6, @daily)), 0)), 112),
    @fytd2= -- to get previous FYTD just -1 from the result of DATEDIFF(YEAR, 0, DATEADD(MONTH, -6, @daily))
        CONVERT(VARCHAR(10), DATEADD(MONTH, 6,DATEADD(YEAR,DATEDIFF(YEAR, 0, DATEADD(MONTH, -6, @daily))-1, 0)), 112)


select @fytd,  @fytd2

See working demo