0

如何在 Informix Date 数据类型上使用 GROUP BY 选择记录?像:

SELECT COUNT(*)
FROM db_table
WHERE my_date.year = 2012
GROUP BY my_date.month

我可以这样使用吗?

GROUP BY MONTH(my_date)

我不知道这个函数是否存在于 Informix 中。目前我无法访问服务器来验证它。

顺便说一句,我使用的是有点旧的版本,版本 10。在版本的文档中,它描述了以下时间函数:

You can use the time functions DAY, MDY, MONTH, WEEKDAY, and YEAR in either the projection clause or the WHERE clause of a query.

看来我不能在 GROUP BY 上使用 MONTH 功能。有什么解决办法吗?

4

3 回答 3

3

我一直在调查这个问题。Informix 有一些奇怪的限制,一个是您不能在 GROUP BY 语句中直接使用与日期相关的函数。您需要在您的选择语句中对输出列之一进行“分组”。

以下应该可以解决问题:

SELECT MONTH(my_date), COUNT(*)
 FROM db_table
 WHERE YEAR(my_date) = '2012'
 GROUP BY 1
于 2014-02-03T16:32:06.457 回答
1

Informix 文档说有MONTH()YEAR()函数

因此,您的查询应该适合您

SELECT COUNT(*)
  FROM db_table
 WHERE YEAR(my_date) = 2012
 GROUP BY MONTH(my_date)
于 2013-07-17T07:41:31.330 回答
-1

像这样使用

SELECT COUNT(*)
  FROM db_table
 WHERE YEAR(my_date) = '2012'
 GROUP BY MONTH(my_date)
于 2013-07-17T08:49:27.093 回答