如何在postgresql中使用日期格式?
How to use date format in postgresql?
我正在使用以下查询:
SELECT distinct to_char(order_date, 'Mon') as mon from meta.ship_error order
by to_char(order_date, 'Mon') asc
输出为:
"Apr"
"Aug"
"Dec"
"Feb"
"Jan"
"Jun"
"Mar"
"May"
"Nov"
"Oct"
"Sep"
""
但我想要这样的输出:
jan
feb
mar
apr ....
我应该在查询中做哪些更改?
您正在按月份的文本表示排序,此处:
order by to_char(order_date, 'Mon') asc
to_char
的结果是字符串,所以按字母顺序排列; Postgres 不再知道这与日期有任何关系,因此没有理由将 "jan" 放在 "apr".
之前
您想按日期本身订购:
order by order_date asc
或者用月份的数字表示,您可以使用 extract()
:
order by extract(month from order_date) asc
请注意,由于您的 DISTINCT
当前是根据文本表示进行分组,因此您可能无法让 SELECT
和 ORDER BY
使用不同的表示。使用显式 GROUP BY
会更容易,它可以列出两种表示形式:
group by extract(month from order_date), to_char(order_date, 'Mon')
因为您可以确定给定的 order_date
不能为这两列生成单独的值,所以这不会更改行数,但允许您这样写:
select to_char(order_date, 'Mon')
from meta.ship_error
group by extract(month from order_date), to_char(order_date, 'Mon')
order by extract(month from order_date);
使用这个查询我得到了我的解决方案
SELECT distinct to_char(order_date, 'Mon') as MON , extract(month from
order_date) from meta.ship_error order by extract(month from order_date) asc
我正在使用以下查询:
SELECT distinct to_char(order_date, 'Mon') as mon from meta.ship_error order
by to_char(order_date, 'Mon') asc
输出为:
"Apr"
"Aug"
"Dec"
"Feb"
"Jan"
"Jun"
"Mar"
"May"
"Nov"
"Oct"
"Sep"
""
但我想要这样的输出:
jan
feb
mar
apr ....
我应该在查询中做哪些更改?
您正在按月份的文本表示排序,此处:
order by to_char(order_date, 'Mon') asc
to_char
的结果是字符串,所以按字母顺序排列; Postgres 不再知道这与日期有任何关系,因此没有理由将 "jan" 放在 "apr".
您想按日期本身订购:
order by order_date asc
或者用月份的数字表示,您可以使用 extract()
:
order by extract(month from order_date) asc
请注意,由于您的 DISTINCT
当前是根据文本表示进行分组,因此您可能无法让 SELECT
和 ORDER BY
使用不同的表示。使用显式 GROUP BY
会更容易,它可以列出两种表示形式:
group by extract(month from order_date), to_char(order_date, 'Mon')
因为您可以确定给定的 order_date
不能为这两列生成单独的值,所以这不会更改行数,但允许您这样写:
select to_char(order_date, 'Mon')
from meta.ship_error
group by extract(month from order_date), to_char(order_date, 'Mon')
order by extract(month from order_date);
使用这个查询我得到了我的解决方案
SELECT distinct to_char(order_date, 'Mon') as MON , extract(month from
order_date) from meta.ship_error order by extract(month from order_date) asc