如何从 Firebird SQL 中的日期获取季度

How to get Quarter from a date in Firebird SQL

我可以很容易地得到本月和上个月的总销售额。

SELECT ‘This Mount’,  SUM(Price) FROM Sales 
WHERE EXTRACT(MONTH FROM OrderDate) = EXTRACT(MONTH FROM CURRENT_DATE)   
  AND EXTRACT(YEAR FROM OrderDate) = EXTRACT(YEAR FROM CURRENT_DATE)   
Union All
SELECT ‘Previous Month’,  SUM(Price) FROM Sales 
WHERE EXTRACT(MONTH FROM OrderDate) = EXTRACT(MONTH FROM CURRENT_DATE)   
  AND EXTRACT(YEAR FROM OrderDate) = EXTRACT(YEAR FROM CURRENT_DATE)   

我想得到本季度和上一季度的总销售额。

使用 MS-SQL 从日期中获取季度非常容易,如下所示:

SELECT DATEPART(QUARTER, @date)

如何使用 Firebird 执行此操作?

将 DECODE 函数与 EXTRACT 结合使用:

SELECT
  DECODE(EXTRACT(MONTH FROM <date_field>),
    1, 'I',
    2, 'I',
    3, 'I',
    4, 'II',
    5, 'II',  
    6, 'II',  
    7, 'III',  
    8, 'III',  
    9, 'III',
    'IV')  
  FROM
    <some_table>

或者只是

  SELECT
    (EXTRACT(MONTH FROM <date_field>) - 1) / 3 + 1
  FROM 
    <some_table>
SELECT dates,
   EXTRACT(MONTH from dates) as SalesMonth, 
   floor(((EXTRACT(MONTH from dates)-1) / 3.0 + 1))  as QTR 
from CustomerPO 
where ((dates > '1/1/2016') and (dates < '12/31/2016')) 
order by dates

这里,'dates'是订单的字段名table'CustomerPO'

SELECT dates,
   EXTRACT(MONTH from dates)            as SalesMonth, 
   ceil(EXTRACT(MONTH from dates) / 3)  as QTR 
from CustomerPO 
where ((dates > '1/1/2016') and (dates < '12/31/2016')) 
order by dates