【问题标题】:Datetime function: semester, quarter日期时间功能:学期、季度
【发布时间】:2018-06-20 08:42:41
【问题描述】:

我在选择查询中使用这些公式,基于 [Date] 字段。学期为 1 月至 6 月,2 月至 7 月至 12 月。 Quarter 是 3 个月的版本(1 月至 3 月等)。

case when Month([Date])>=7 then 2 else 1 end as [Semester],
ceiling((Month([Date])-1)/3)+1 as [Quarter]

这些工作,但我想知道是否有更简单/更优雅的解决方案(尽管我已经检查了 datetime 函数)。

我觉得奇怪的是,带有 ntile() 函数的语言不会有类似的日期。

【问题讨论】:

    标签: sql sql-server tsql datetime


    【解决方案1】:

    DATEPART 适合您的情况。

    CASE WHEN DATEPART(quarter,[Date]) >= 3 THEN 2 ELSE 1 END as [Semester],
    DATEPART(quarter,[Date]) as [Quarter]
    

    【讨论】:

      【解决方案2】:

      DATEPART 可以轻松给你四分之一。

      它没有学期或半年的选项,但您可以使用与当前用于季度计算的数学相似的数学从季度轻松得出。

      ((DATEPART(quarter,[Date])-1)/2)+1 as [Semester],
      DATEPART(quarter,[Date]) as [Quarter]
      

      【讨论】:

        【解决方案3】:
        select 
            CASE WHEN month([DATE]) < 7 then  '01'
            else '02'
            end
        FROM [Table]
        

        您可以从 MONTH(date) 获取学期编号

        【讨论】:

          【解决方案4】:

          也许以后。 学期:cast(ceiling((extract(MONTH FROM madate))/6) as integer)

          【讨论】:

            猜你喜欢
            • 2021-07-25
            • 1970-01-01
            • 1970-01-01
            • 2022-11-03
            • 2017-10-22
            • 2018-06-01
            • 1970-01-01
            • 1970-01-01
            • 2020-02-22
            相关资源
            最近更新 更多