Comment formater “le temps de la zone de” dans Postgres?
J'ai un champ de base de données de type time with time zone
. Comment puis-je demander à ce champ dans EST5EDT fuseau horaire avec la sortie au format hh:mm:ss?
Tout ce que je peux trouver est l'utilisation de plusieurs appels à EXTRACT
:
SELECT EXTRACT(HOUR FROM TIME WITH TIME ZONE '20:38:40-07' AT TIME ZONE 'EST5EDT');
[Edit:]
Pour être clair, cette requête:
SELECT TIME WITH TIME ZONE '20:38:40.001-07' AT TIME ZONE 'EST5EDT';
Renvoie "22:38:40.001" mais je veux juste "22:38:40" comme la sortie.
OriginalL'auteur griffin | 2009-12-21
Vous devez vous connecter pour publier un commentaire.
Utiliser le TO_CHAR() fonction:
Voyant que TO_CHAR accepte uniquement l'horodatage type de données, vous devez concatentate une date arbitraire de la valeur à votre valeur de temps.
Vous pouvez le tester comme ceci: SELECT TO_CHAR(le TEMPS de la ZONE '20:38:40.001-07', 'HH24:MI:SS')
Fantastique. Merci!
Je suis de l'utilisation de PostgreSQL 9.3 et ce n'est plus nécessaire, aujourd'hui to_char() fonctionnent très bien avec le "temps sans fuseau horaire" (ou avec le fuseau horaire) types de données.
Merci beaucoup
OriginalL'auteur OMG Ponies
"le temps de la zone" est en fait un faux type de données, et en tant que telle n'est pas vraiment pris en charge dans beaucoup de cas.
Comment définissez-vous "le temps de la zone"? Les fuseaux horaires dépendent des dates, ce qui n'est pas inclus dans le type de données, et donc il n'est pas entièrement défini. (oui, c'est obligatoire par la norme SQL, mais ce n'en est pas sain d'esprit)
Vous êtes probablement mieux de première fixation de ce type de données que vous utilisez. Soit utiliser le timestamp avec le temps, d'une zone ou d'utiliser le temps (sans zone de temps).
OriginalL'auteur Magnus Hagander
Vous pouvez simplement utiliser la FONTE et la FONTE à la fois de type:
(Bien sûr, le résultat aura un type de données différent)
OriginalL'auteur Roland Bouman