甲骨文:按月分组

时间:2015-06-04 12:25:34

标签: oracle date-format

我有这样的问题,我正在使用Oracle数据库。在我的一个表中,有一个时间戳格式的列,如06.01.14 08:54:35 我必须通过按月对该列进行分组来选择一些数据。 如果06.01.14然后Jan.2014格式的MM.YYYY必须为SELECT to_char(ctime,'mm.yyyy') from table_name,那么查询该列的结果,我尝试了这样的查询

to_date

但结果不是日期格式,而是字符串格式。我无法使用>>> query='';for var in xrange(9):\n\tquery+=str(var) File "<stdin>", line 1 query='';for var in xrange(9):\n\tquery+=str(var) ^ SyntaxError: invalid syntax >>> query='';for var in xrange(9): query+=str(var) File "<stdin>", line 1 query='';for var in xrange(9): query+=str(var) ^ SyntaxError: invalid syntax 函数

执行此操作

你能帮助我吗

2 个答案:

答案 0 :(得分:2)

如果ctime的类型为TIMESTAMP

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

编辑:如果你想要一个月和一年如何&#34; Jan - 2014&#34;,我认为你所需要的只是:

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

答案 1 :(得分:1)

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

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

TRUNC(cTime,'MON')

将截断到本月的第一天并将其保留为日期格式。你如何展示它取决于你。但是如果你期望DATE值没有日/小时/分钟/秒组件 - 那么我担心你不理解数据类型。