SQL 从 dd/mm/yyyy SSMS 2012 导出财政年度 (20XX/YY)
SQL Deriving Financial year (20XX/YY) from dd/mm/yyyy SSMS 2012
我的财政年度是 01/04/20X0 到 31/03/20X1。因此,当前财政年度是从 01/04/2018 到 31/03/2019。缩写为“20X0/X1”或“2018/19”。
我的输出日期是 01/08/2021,并且始终采用 dd/mm/yyyy 格式。这对应财政年度“2021/22”
我需要帮助从我的日期或 dd/mm/yyyy.
格式的任何给定日期推导出 return 财政年度的万无一失的公式
我不想使用 Case 语句,因为会有多个 band,而且看起来效率不高。
这是我目前正在使用的,但有问题
CAST(YEAR(DATEADD(month, 9, ISNULL(msdate5.[Completion - Revised], msdate5.[Completion - Original])))-1 as nvarchar) + '/' + CAST(YEAR(DATEADD(month, 9, ISNULL( msdate5.[Completion - Revised], msdate5.[Completion - Original]))) as nvarchar)
您可以使用这个表达式:
select (datename(year, dateadd(month, -3, @mydate)) + '/' +
datename(year, dateadd(month, -3 + 12, @mydate))
)
这会将日期偏移三个月并提取年份。请注意 datename()
的使用,这样您就不必费心将任何内容转换为字符串。
今天,这个 returns '2018/19'
。对于这样的事情,最简单的方法之一是将财政年度与日历年对齐,然后从那里开始工作:
DECLARE @Date date = GETDATE();
SELECT CONVERT(varchar(4),DATEPART(YEAR, DATEADD(MONTH, -3, @Date))) + '/' + RIGHT(DATEPART(YEAR, DATEADD(MONTH, -3, @Date)) +1,2);
DECLARE @mydate VARCHAR(20) = '01/08/2021'
SELECT cast(datepart(year, @mydate) AS VARCHAR(4)) + '/' + cast((datepart(year, @mydate) + 1) AS VARCHAR(4))
SELECT cast(cast(datepart(year, @mydate) AS VARCHAR(4)) + '/' + '04' + '/' + '01' AS DATETIME)
,cast(cast((datepart(year, @mydate) + 1) AS VARCHAR(4)) + '/' + '03' + '/' + '31' AS DATETIME)
我的财政年度是 01/04/20X0 到 31/03/20X1。因此,当前财政年度是从 01/04/2018 到 31/03/2019。缩写为“20X0/X1”或“2018/19”。
我的输出日期是 01/08/2021,并且始终采用 dd/mm/yyyy 格式。这对应财政年度“2021/22”
我需要帮助从我的日期或 dd/mm/yyyy.
格式的任何给定日期推导出 return 财政年度的万无一失的公式我不想使用 Case 语句,因为会有多个 band,而且看起来效率不高。
这是我目前正在使用的,但有问题
CAST(YEAR(DATEADD(month, 9, ISNULL(msdate5.[Completion - Revised], msdate5.[Completion - Original])))-1 as nvarchar) + '/' + CAST(YEAR(DATEADD(month, 9, ISNULL( msdate5.[Completion - Revised], msdate5.[Completion - Original]))) as nvarchar)
您可以使用这个表达式:
select (datename(year, dateadd(month, -3, @mydate)) + '/' +
datename(year, dateadd(month, -3 + 12, @mydate))
)
这会将日期偏移三个月并提取年份。请注意 datename()
的使用,这样您就不必费心将任何内容转换为字符串。
今天,这个 returns '2018/19'
。对于这样的事情,最简单的方法之一是将财政年度与日历年对齐,然后从那里开始工作:
DECLARE @Date date = GETDATE();
SELECT CONVERT(varchar(4),DATEPART(YEAR, DATEADD(MONTH, -3, @Date))) + '/' + RIGHT(DATEPART(YEAR, DATEADD(MONTH, -3, @Date)) +1,2);
DECLARE @mydate VARCHAR(20) = '01/08/2021'
SELECT cast(datepart(year, @mydate) AS VARCHAR(4)) + '/' + cast((datepart(year, @mydate) + 1) AS VARCHAR(4))
SELECT cast(cast(datepart(year, @mydate) AS VARCHAR(4)) + '/' + '04' + '/' + '01' AS DATETIME)
,cast(cast((datepart(year, @mydate) + 1) AS VARCHAR(4)) + '/' + '03' + '/' + '31' AS DATETIME)