Postgresql postgres中月份(仅月份)的数据类型是什么?
我需要在postgresql中创建一个名为“月”的列的表。“月”列应该有一月、二月等,而不是1、2、3等。我需要检索按月排序的数据。我应该使用什么样的数据类型,如何检索按月排序的数据?如果您只需要保存月份,而不需要保存整个日期,我会创建一个:Postgresql postgres中月份(仅月份)的数据类型是什么?,postgresql,Postgresql,我需要在postgresql中创建一个名为“月”的列的表。“月”列应该有一月、二月等,而不是1、2、3等。我需要检索按月排序的数据。我应该使用什么样的数据类型,如何检索按月排序的数据?如果您只需要保存月份,而不需要保存整个日期,我会创建一个: 根据您的要求,根据您的需要,您有几个选择: 如果您只需要几个月作为静态记录,但实际上不需要时间,那么可以使用enum,正如Mureinik回答的那样 如果您需要将月份作为特定时间的一部分,您可以使用 假设您使用的是ENUM,您可以使用SELECT*FR
根据您的要求,根据您的需要,您有几个选择:
- 如果您只需要几个月作为静态记录,但实际上不需要时间,那么可以使用enum,正如Mureinik回答的那样
- 如果您需要将月份作为特定时间的一部分,您可以使用李>
SELECT*FROM“Month”ORDER BY id ASC
一个没有名字的马说,由于本地化问题,最好使用几个月的数值,这是有道理的。您可以用不同的语言为不同的月份名称创建一个单独的表,但可能有一种更有效的方法。或者,可以有每个月的电话号码,查询后,您可以根据项目中的号码调用该月的名称,如建议的那样。这样,您可以根据本地化情况调用不同的名称。最好将月份保存为整数,并在查询时显示月份名称:
with months(month) as (
select generate_series(1, 12)
)
select
month as month_number,
to_char(
'1999-12-31'::date + month * interval '1 month',
'Month'
) as month_name
from months
order by month_number; -- or by month_name
month_number | month_name
--------------+------------
1 | January
2 | February
3 | March
4 | April
5 | May
6 | June
7 | July
8 | August
9 | September
10 | October
11 | November
12 | December
为了便于构建查询,请创建一个返回月份名称的函数:
create or replace function month_name(month integer)
returns text as $$
select
to_char(
'1999-12-31'::date + month * interval '1 month',
'Month'
);
$$ language sql;
现在简单地说:
with months(month) as (
select generate_series(1, 12)
)
select
month as month_number,
month_name(month)
from months
order by month_number;
在向最终用户显示数据时,最好先存储数字,然后将其转换为名称。如果存储
一月
,则无法使用非英语版本运行应用程序locale@a_horse_with_no_name是的,这很好,我试着喜欢你的建议,但在我的情况下,我做不到。@Mureinnik你的答案是正确的。我可以将日期类型(月枚举)更改为字符吗?我需要将日期从一个表转换为另一个表。其他表月份列数据类型为character。@Pirinthan您可以使用:
运算符强制转换它:从我的表中选择month\u col::varchar
。
with months(month) as (
select generate_series(1, 12)
)
select
month as month_number,
month_name(month)
from months
order by month_number;