更改日期格式而不转换为文本?

时间:2015-07-20 08:57:51

标签: postgresql date casting

我需要将日期格式从yyyy-mm-dd更改为dd/mm/yyyy,但我需要保留列的日期类型。到目前为止,我已经使用了这种方法来正确地更改格式,但是将列类型从日期转换为文本。

TO_CHAR(mydate::TIMESTAMP WITH TIME ZONE, 'dd/mm/yyyy'::TEXT) ;

如何保留日期类型?

1 个答案:

答案 0 :(得分:0)

这是一种误解 如果您的数据类型为date,那么它将以格式存储,不带格式。它只是一个4字节的整数,计算自2000年以来的秒数。

您可以在向客户端显示时以任何方式对其进行格式化。

SELECT to_char(mydate, 'yyyy-mm-dd') AS one_way
      ,to_char(mydate, 'dd/mm/yyyy') AS other_way

'yyyy-mm-dd'恰好是ISO 8601格式,这是许多语言环境中的默认文本表示。

您始终可以使用日期的文本表示创建VIEW

CREATE VIEW v_tbl_with_date_foramt AS
SELECT id, some_column, to_char(mydate, 'dd/mm/yyyy') AS mydate_text
FROM tbl;

但现在它是text列,而不是date列。

datestyle负责解释输入日期文字的方式。

LC_TIME规定日期/时间函数的行为方式。

默认显示为ISO 8601:'yyyy-mm-dd'