select count(*) as col1,
to_char(your_column, 'Mon RR', 'NLS_DATE_LANGUAGE=ENGLISH') as col2
from your_table
group by to_char(your_column, 'Mon RR', 'NLS_DATE_LANGUAGE=ENGLISH')
order by col2;
select count(*) as col1,
to_char(trunc(your_column, 'MM'), 'Mon RR', 'NLS_DATE_LANGUAGE=ENGLISH') as col2
from your_table
group by trunc(your_column, 'MM')
order by trunc(your_column, 'MM');
3条答案
按热度按时间w80xi6nr1#
在oracle中,可以使用
to_date()
为此:注意,oracle根据nls参数解释月份名称,例如
NLS_DATE_LANGUAGE
. 所以要让它工作,你的数据库的语言必须是美国的。如果不是这样,可以尝试将参数作为第三个参数强制
to_date()
:dsekswqp2#
一种方法是:
根据您的数据库,可能有更简单的方法来表达这一点。
eivgtgni3#
它是一个将日期转换为mmm-yy格式的查询
当您处理月份时,您可能正在按月份聚合每日数据,并且当前正在执行以下操作:
它按日期的字符串表示形式对数据进行排序(这并不是您在示例中显示的内容,但不确定您是否创建了奇怪的…)
如果使用实际月份进行聚合,则通过截断日期值(给出该月的第一天),然后可以按截断日期分组和排序;只需在最后一刻转换为字符串即可显示:
db<>小提琴
像@gmb一样,我已经指定了月份缩写的语言。