我搜索并尝试了各种查询但仍然卡住了。非常感谢这方面的帮助。任何人都可以建议如何根据yyyymmdd格式的日期检索前2个金融ytd的开头?
我有一个每日报告,如果日期是yyyymmdd,那么我想检索最后2个财政年度的开始日期。例如,如果日期是20180612,那么我想从20160701获得日期。
答案 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 强>