【问题标题】:Returning the Quarter in SQL Server在 SQL Server 中返回季度
【发布时间】:2009-11-26 10:27:50
【问题描述】:

我是 SQL Server 的新手,天真地认为会有一个 QUARTER() 函数,可惜没有,而且有些谷歌搜索没有找到任何有用的东西!

基本上我想要实现的是,对于我数据库中的所有行,我想要按季度分组的那些行的计数。

如果可能的话,我希望通过查询保留所有计算,但如果不是,则由 PHP 启动一切。

【问题讨论】:

    标签: php sql-server date


    【解决方案1】:

    这应该可以解决问题,前提是您当然在该行中有一个日期时间列:)

    SELECT datepart(qq, my_date_column) as quarter, count(*) as rows
      from my_table
      group by datepart(qq, my_date_column) 
    

    当然,如果你有超过一年的数据,你可能还想加上datepart(yyyy, my_date_column)

    【讨论】:

    【解决方案2】:

    我用

    select Datename(quarter,MYDATECOLUMN_NAME) 
    

    MYDATECOLUMN_NAME 是日期格式。

    【讨论】:

      【解决方案3】:
      select
      CONVERT(DATETIME, CONVERT(CHAR(8),
      DATEPART(YEAR, yourDateColumn) * 10000 +
      ( DATEPART(QUARTER, @date) * 3 - 2) * 100 +
      1),
      112) from...
      

      取自这里:

      http://geertverhoeven.blogspot.com/2007/01/get-quarter-of-given-date-in-datetime.html

      或者您可以使用该链接评论中提到的 SQL 来获取季度的第一天:

      DATEADD(qq,DATEDIFF(qq,0,@date),0)
      

      【讨论】:

      • 我不太确定这是否会返回?确定只是季度?
      【解决方案4】:

      我只是在日期上使用了 Month 函数,然后使用了 Case 函数来组织它们:

      Case When Month(date) in (1,2,3) then '1stQtr' 
           When Month(date) in (4,5,6) then '2ndQtr'
           When Month(Date) in (7,8,9) then "3rdQtr'
           When Month(Date) in (10,11,12) then '4thQty' END AS Quarter 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多