我需要将日期格式从yyyy-mm-dd
更改为dd/mm/yyyy
,但我需要保留列的日期类型。到目前为止,我已经使用了这种方法来正确地更改格式,但是将列类型从日期转换为文本。
TO_CHAR(mydate::TIMESTAMP WITH TIME ZONE, 'dd/mm/yyyy'::TEXT) ;
如何保留日期类型?
答案 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'
。