首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle数据聚合

问Oracle数据聚合
EN

Stack Overflow用户
提问于 2012-07-25 05:30:06
回答 3查看 127关注 0票数 1

我在Oracle中有一个表,其中包含每日值的总和。

我的目标是让这个表显示每月的值总和,而不是每天。

我使用下面的查询完成了这项工作:

代码语言:javascript
复制
select to_char(dateid, 'YYYY-MM') as thedate, count(*)
from picture_table
group by to_char(dateid, 'YYYY-MM')
order by 1, 2

这里的问题是,我必须将这个oracle表转移到MySQL中的一个表中。由于MySQL的日期数据结构被强制为'YYYY-MM-DD‘格式,所以我想我必须将我所有的月份都附加到'YYYY-MM-01’中,这样"01“就代表了整个月的总和。

有没有可能执行一个oracle查询,将-01附加到所有我的日期,这样它们就可以正确地通过管道传输到MySQL表?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-25 05:32:42

您可以使用一个简单的concat来实现:

代码语言:javascript
复制
select to_char(dateid, 'YYYY-MM')||'-01' as thedate, count(*)
from picture_table
group by to_char(dateid, 'YYYY-MM')
order by 1, 2

但是,为什么mysql表使用日期字段?它可以只有一个varchar()列,以接受"yyyy-mm“格式?

票数 1
EN

Stack Overflow用户

发布于 2012-07-25 05:52:23

通常,使用TRUNC函数将日期截断到月初会更有意义(也更有效)。结果值的类型为DATE。

代码语言:javascript
复制
SELECT trunc(dateid, 'MM' ) thedate, count(*)
  FROM picture_table
 GROUP BY trunc(dateid, 'MM')
 ORDER BY 1, 2

您在问题中所说的“MySQL管道端”是什么意思并不明显。我假设无论您使用什么工具将数据从Oracle移动到MySQL,都能够正确地处理将Oracle DATE映射到MySQL DATE或DATETIME。如果必须将Oracle中的日期转换为特定格式的字符串,只是为了让MySQL将该字符串隐式转换回DATE,这似乎非常不寻常。

票数 2
EN

Stack Overflow用户

发布于 2012-07-25 05:43:27

您可以在MySQL中设置相同的日期格式,只需要一个不同的函数:

代码语言:javascript
复制
select date_format(dateid, '%Y-%m') as thedate, count(*)
from picture_table
group by date_format(dateid, '%Y-%m')
order by 1, 2

示例如下:http://sqlfiddle.com/#!2/af6bd/2

date_format()函数说明:http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11639606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档