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的主要内容,如果未能解决你的问题,请参考以下文章

在 group by 中使用 datetime 日期并在单个 SELECT 中使用 order by 与使用子查询

查询 mysql group by 并拥有

SQLITE 每月使用 SUM 查询 GROUP BY

SQL GROUP BY 奇怪的行为

Laravel 按日期分组,如 MySQL 查询 GROUP BY MONTH(fields) [关闭]

mysql按日期分组(group by)查询统计的时候,没有数据补0的解决办法