【问题标题】:Get last day of a given quarter and Year in SQL在 SQL 中获取给定季度和年份的最后一天
【发布时间】:2020-08-02 17:07:34
【问题描述】:

我从视图中获得了 2 个变量年份和季度。我必须通过这些值来获取该特定季度和年份的最后日期。有没有办法在 SQL 中做到这一点?

例如:

select (QuarterEndDate) where Year = @year and Quarter = @quarter

【问题讨论】:

  • 您使用的是哪个 dbms? (在日期/时间方面,许多产品远不符合 ANSI SQL。)
  • 轻松为您提供帮助:minimal reproducible example.

标签: sql sql-server tsql date select


【解决方案1】:

我会使用datefromparts()eomonth()

select eomonth(datefromparts(@year, 3 * @quarter, 1))

Demo on DB Fiddlde

declare @year int;
declare @quarter int;

set @year = 2020;
set @quarter = 3;

select eomonth(datefromparts(@year, 3 * @quarter, 1)) last_quarter_day
GO
|上一季度 | | :--------------- | | 2020-09-30 |

【讨论】:

    【解决方案2】:

    试试下面的,应该会给你一个季度的最后日期。

    第一个选项:qq 是您的季度编号。

    dateadd(qq, DateDiff(qq, 0, @Date), -1) 
    

    第二个选项:

    dateadd(D,-1,dateadd(M, 3*qq+3, CONVERT(date, CONVERT(varchar(5),@year)+'-1-1')))
    

    【讨论】:

    • 感谢您的回复。它给了我下个季度的最后一天。假设我将 @Quarter(number) 作为 1 并将 @year 作为 2020 传递,它显示 30-06-2020。它应该显示 31-03-2020。请帮忙。
    • @Neeta 输入您的季度编号。在qq 中像上面公式中的 1、2、3 一样,看看你是否得到了预期的结果。还增加了一个选项。
    • 即使我把季度放在qq里,也显示的是下季度的最后一天。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2014-11-21
    • 2013-09-04
    • 2019-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多