如何在SQL Server中找到季度、半年和本年的最后一天?

问题描述 投票:0回答:1

我想在SQL Server中找到季度、半年和当年的最后一天。假设当前日期是2020年5月12日,季度结束日期是2020年6月30日,半年日期是2020年6月30日,年结束日期是2020年12月31日。

我可以使用DATEADD和DATEDIFF内置函数获得季度和年份的最后日期,但无法获得半年的最后日期。

sql-server datetime datediff
1个回答
3
投票

由于你标记了 datediff,这是一个使用 dateadd datediff

; with dates as
(
    select  [date] = convert(date, '2020-01-01')
    union all
    select  [date] = dateadd(month, 1, [date])
    from    dates
    where   [date]  < '2020-12-01'
)
select  [date],
        dateadd(quarter, datediff(quarter, 0, [date]) + 1, -1) as [Last Day of Quarter],
        dateadd(quarter, datediff(quarter, 0, [date]) / 2 * 2 + 2, -1) as [Last Day of Half Year],
        dateadd(year, datediff(year, 0, [date]) + 1, -1) as [Last Day of Year]
from    dates

抚琴

© www.soinside.com 2019 - 2024. All rights reserved.