2010-02-01 4 views
0

Comment puis-je générer des dates postgresql avec des fuseaux horaires conformes à ISO 8601?Mise en forme des dates Postgresql avec Timezone

par exemple. J'ai la valeur

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

et j'ai besoin dans ce format:

2006-11-10T07:35+01 

je pourrais le faire assez facilement avec la manipulation de chaînes, mais les fonctions de formatage de date standard pour

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

me donnerait ceci:

2006-11-10T07:11CET 

au lieu de ceci:

2006-11-10T07:11+02 

Est-il possible d'obtenir le timzone comme un décalage au lieu comme une abréviation?

Répondre

0

Utilisation de la manipulation de chaînes, peut-être? Comme:

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

ou

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

pas élégant, mais il fait le travail (testé avec 8.3)

+0

"fais le boulot" = assez bien pour moi! Je vous remercie. – adwk

0

Peut-être qu'il est trop tard, mais voici une alternative:

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

Nota: J'ai remplacé mm par mi dans l'expression ci-dessus, car je pense que les minutes sont attendues au lieu de mois après l'heure.