使用Timezone格式化Postgresql日期

时间:2010-02-01 09:28:16

标签: postgresql

如何使用符合ISO 8601标准的时区输出postgresql日期?

e.g。我有值

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作为偏移而不是缩写?

2 个答案:

答案 0 :(得分:0)

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

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

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

不优雅,但它完成了工作(用8.3测试)

答案 1 :(得分:0)

也许为时已晚,但这是另一种选择:

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

Nota:我已在上面的表达式中将mm替换为mi,因为我认为预计会有分钟而非一小时后的几个月。