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 与使用子查询