返回财政年度的第一天(4 月 1 日)T-SQL

Posted

技术标签:

【中文标题】返回财政年度的第一天(4 月 1 日)T-SQL【英文标题】:Return First day of Financial Year(April 1st) T-SQL 【发布时间】:2018-06-21 06:13:31 【问题描述】:

财政年度的第一天是 4 月 1 日。

返回 4 月 1 日 getdate() 的 T-SQL 查询

财政年度:4月1日至3月31日

【问题讨论】:

你到底在找什么? 您可以定义一个 UDF,您可以在其中返回当年的 4 月 1 日。无论如何,财政年度的第一天永远不会改变。 创建一个日历表,它将解决多于1个日期/时间的问题。 【参考方案1】:

试试这个:

select DATEFROMPARTS(Yr, 4, 1) [start], DATEFROMPARTS(Yr + 1, 3, 31) [end] from 
(select case when DATEPART(month, getdate()) < 4 then DATEPART(year, getdate()) - 1 else DATEPART(year, getdate()) end Yr) a

【讨论】:

【参考方案2】:
declare @today  date = '2018-06-21'

select  fin_year = dateadd(month, 3, 
                           dateadd(year, 
                                   datepart(year, 
                                            dateadd(month, -3, @today)) - 1900, 0))

表达式datepart(year, dateadd(month, -3, @today)) 是获取当前财政年度。由于您的财政年度是 4 月 1 日,因此从 1 月 1 日到 3 月 31 日,从中减去 3 个月,将为您提供正确的年份(财政年度 = 财政年度)。

之后就是用那一年形成日期Apr 1

【讨论】:

FY 的最后一天可能是 LastDayOfYearFY] = eomonth(dateadd(month, 5, dateadd(year, datepart(year, (dateadd(month, 6, [date])) ) -1900, 0))) 感谢您的帮助【参考方案3】:
DECLARE @DateToUse DATETIME = GETDATE(),
        @FinancialYearStart DATETIME
DECLARE @DayPart INT = DATEPART(DAY, @DateToUse),
        @MonthPart INT = DATEPART(MONTH, @DateToUse),
        @YearPart INT = DATEPART(YEAR, @DateToUse),
        @StartMonth INT = 4, -- April
        @StartDay INT = 1 -- 1st

SELECT DATETIMEFROMPARTS((
        @YearPart - CASE 
            WHEN @MonthPart > @StartMonth
                OR (
                    @MonthPart = @StartMonth
                    AND @DayPart >= @StartDay
                    )
                THEN 0
            ELSE 1
            END
        ), @StartMonth, @StartDay, 0, 0, 0, 0)

我刚刚敲了这个,它产生了2020-04-01 00:00:00.000 现在。我扔了一些其他的日期,它似乎工作得很好。显然,可以通过更改顶部的变量轻松更改月/日。

它不是最短的 SQL 块,但它很容易用于不同的日期。我在不同问题中看到的许多其他答案都返回了不同的格式,例如字符串或只是年份部分。而这个日期时间将允许它用于日期时间比较。

【讨论】:

以上是关于返回财政年度的第一天(4 月 1 日)T-SQL的主要内容,如果未能解决你的问题,请参考以下文章

我如何回应财政年度?

数学计算财政年度 5-4-4 时间表

财政年度从 4 月开始,但我想使用 ISO 2018 日历年的第 14 周到 2019 日历年的第 13 周

php求当前季度的第一天和最后一天

如何获得一个月内每周的第一天和最后一天?

动态计算截至该日期的财政年度结束和周数