我正在尝试将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;
以上陈述产生错误“月份无效值”
有什么想法吗?
答案 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)