2010-02-01 106 views
0

如何使用ISO 8601兼容時區輸出postgresql日期?格式化帶時區的Postgresql日期

例如我有值

2006-11-10 07:35:30+01 

,我需要它的格式如下:

2006-11-10T07:35+01 

我能做到這一點很容易不夠用字符串操作,但對於

to_char(<my date>, 'YYYY-MM-DDThh:mmTD') 

標準的日期格式功能會給我這個:

2006-11-10T07:11CET 

,而不是這樣的:

2006-11-10T07:11+02 

有沒有辦法讓timzone作爲代替的偏移量的縮寫?

回答

0

使用字符串操作,也許?像:

regexp_replace(current_date || 'T' || current_time, E':[^:]*?\\+', E'+'); 

replace(regexp_replace(now()::text, E':[^:]*?\\+', E'+'), ' ', 'T'); 

不優雅,但它能夠完成任務(8.3測試)

+0

「完成工作」=對我來說足夠好!謝謝。 – adwk 2010-02-01 11:09:25

0

也許爲時已晚,但這裏是一個另類:

to_char(now(), 'YYYY-MM-DDThh:mi')::timestamp with time zone::text 

注意:我已將mm更換爲上面的表達式中的,因爲我認爲分鐘是預計的,而不是一小時後的幾個月。