我正在尝试将我的日期列格式化为' YYYYMM'来自&YYYY-MM-DD'。
我的代码: SELECT to_char(date' 2015-06-01',' YYYYMM');
我不确定这是否有效,因为日期仍然看起来像原始格式。此外,新的' YYYYMM'格式是否应用于此表中导入的数据?
答案 0 :(得分:2)
date
类型实现为2000-01-01的天数 - 此数字没有任何可视形式 - 它只是偏移量。您可以更改数据可视化时使用的可视化。
postgres=# set datestyle to ISO;
postgres=# select current_date;
┌────────────┐
│ date │
╞════════════╡
│ 2015-11-11 │
└────────────┘
(1 row)
postgres=# set datestyle to GERMAN;
postgres=# select current_date;
┌────────────┐
│ date │
╞════════════╡
│ 11.11.2015 │
└────────────┘
(1 row)
还有其他辅助功能可用于格式化日期to_char
和处理日期字符串to_date
。 datestyle
可用的样式集是有限的。更多datestyle
是全局变量,使用它会增加应用程序中不需要的缺陷的风险 - 因此不首选使用datestyle
。
postgres=# select to_char(current_date, 'YYYYMM');
┌─────────┐
│ to_char │
╞═════════╡
│ 201511 │
└─────────┘
(1 row)
set datestyle to iso;
postgres=# select to_date('201511','YYYYMM');
┌────────────┐
│ to_date │
╞════════════╡
│ 2015-11-01 │
└────────────┘
(1 row)
默认情况下,数据以文本格式从Postgres传送到客户端。因此,这些格式化功能(功能)的使用会影响客户端的接收数据(来自数据库)。 to_char
显式转换为文本类型,因此任何客户端都可以读取它(因为它必须能够读取文本)。