Return财政年度的第一天(4 月 1 日)T-SQL
Return First day of Financial Year(April 1st) T-SQL
财政年度的第一天是 4 月 1 日。
T-SQL 查询 return 4 月 1 日 getdate()
财政年度:4 月 1 日至 3 月 31 日
试试这个:
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
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 个月,将为您提供正确的年份(财政年度 = 财政年度)。
之后就是把4月1日和那年组成日期
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
产生了。我在它上面添加了一些其他日期,它似乎工作得很好。显然 month/day 可以通过更改顶部的变量轻松更改。
它不是SQL中最短的块,但它很容易用于不同的日期。我在不同问题上看到的许多其他答案都返回了不同的格式,例如字符串或年份部分。而此日期时间将允许它用于日期时间比较。
财政年度的第一天是 4 月 1 日。
T-SQL 查询 return 4 月 1 日 getdate()
财政年度:4 月 1 日至 3 月 31 日
试试这个:
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
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 个月,将为您提供正确的年份(财政年度 = 财政年度)。
之后就是把4月1日和那年组成日期
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
产生了。我在它上面添加了一些其他日期,它似乎工作得很好。显然 month/day 可以通过更改顶部的变量轻松更改。
它不是SQL中最短的块,但它很容易用于不同的日期。我在不同问题上看到的许多其他答案都返回了不同的格式,例如字符串或年份部分。而此日期时间将允许它用于日期时间比较。