甲骨文:按月分组

Oracle: group by month

我有这样的问题,我正在使用 Oracle 数据库。在我的一张表中有一个时间戳格式的列,如 06.01.14 08:54:35 我必须 select 通过仅按月对该列进行分组来获取一些数据。 列的查询结果 if 06.01.14 then must be Jan.2014 in MM.YYYY format, 我试过这样的查询

SELECT to_char(ctime,'mm.yyyy') from table_name

但结果不是日期格式,而是字符串格式。我无法使用 to_date 函数

你能帮帮我吗

如果ctime的类型是TIMESTAMP:

SELECT EXTRACT(month from ctime) "month" from table_name

编辑: 如果你想要像 "Jan - 2014" 这样的月份和年份,我想你只需要:

SELECT TO_CHAR(ctime, 'FMMon - YYYY') from table_name

(参见 http://www.techonthenet.com/oracle/functions/to_char.php

如果 ctime 是一个字符串(例如类型 VARCHAR),您需要先转换为时间戳(所以上面,而不是 ctime,替换为 TO_TIMESTAMP(ctime, "MM.DD.YY HH:MM:SS")

HTH

当然,to_char 的任何变化都会产生字符串格式。这就是它的作用。我认为您混淆了值的显示方式及其背后的数据类型。

现在,如果您有 DATE 字段,那么您可以使用

TRUNC(cTime,'MON')

这将截断到该月的第一天,并保留日期格式。你如何显示它取决于你。但是,如果您期望 DATE 值没有 day/hour/minute/second 组件 - 那么恐怕您不了解数据类型。