2010-02-01 108 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更换为上面的表达式中的,因为我认为分钟是预计的,而不是一小时后的几个月。