Informix 日期查询 GROUP BY Month

Posted

技术标签:

【中文标题】Informix 日期查询 GROUP BY Month【英文标题】:Informix Date Query GROUP BY Month 【发布时间】:2013-07-17 07:02:00 【问题描述】:

如何在 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 功能。有什么解决办法吗?

【问题讨论】:

我认为 GROUP BY MONTH(my_date) 是正确的,您也可以尝试使用 sqlfiddle.com 来测试您的任何查询。 【参考方案1】:

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

以下应该可以解决问题:

SELECT MONTH(my_date), COUNT(*)
 FROM db_table
 WHERE YEAR(my_date) = '2012'
 GROUP BY 1

【讨论】:

【参考方案2】:

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

因此您的查询应该适合您

SELECT COUNT(*)
  FROM db_table
 WHERE YEAR(my_date) = 2012
 GROUP BY MONTH(my_date)

【讨论】:

你能执行这个查询吗?我使用了查询,Informix 说有语法错误。 @MarcusThornton 是正确的 - 这会产生语法错误。罗德的回答是正确的。【参考方案3】:

这样使用

SELECT COUNT(*)
  FROM db_table
 WHERE YEAR(my_date) = '2012'
 GROUP BY MONTH(my_date)

【讨论】:

以上是关于Informix 日期查询 GROUP BY Month的主要内容,如果未能解决你的问题,请参考以下文章