如何将Vertica日期列格式化为仅一个月?

时间:2014-02-05 22:20:47

标签: sql vertica

我正在尝试将Vertica日期列格式化为仅一个月。

我需要某种日期数据类型的最终值,所以在报告中我可以按日期/时间排序结果,而不是按文字排序。因此2月份在1月之后进行了分类等。

select TO_DATE(TO_CHAR(purchase_date), 'Month')  
from transactions
order by 1;

我也尝试过:

select TO_DATE(TO_CHAR(MONTH(purchase_date)), 'Month')  
from transactions
order by 1;

以上陈述产生错误“月份无效值”

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

这个怎么样?

select to_char(purchase_date, 'Month')
from transactions
order by purchase_date;

您可以按不在select列表中的列进行排序。

编辑:

如果你想结合多年的月份,上述方法将无法正常运作。这将:

select to_char(purchase_date, 'Month')
from transactions
order by extract(month from purchase_date);

答案 1 :(得分:0)

Select TO_CHAR((NOW() - INTERVALYM '1 MONTH'), 'MON');

输出:

JUN

这将帮助您只获取上个月的名称。

答案 2 :(得分:0)

我们可以直接使用date_part从时间戳获取一个月。

SELECT DATE_PART('MONTH', purchase_date) purchase_date

TO_DATE给出了完整的日期,如果仅在参数中提供MM,则Vertica会设置默认的年份和日期。

假设月份为8。

SELECT TO_DATE(purchase_date, 'MM')

输出:(0001-08-01)