PostgreSQL

Horodatage PostgreSQL To_char avec fuseau horaire

Horodatage PostgreSQL To_char avec fuseau horaire

Les méthodes de formatage PostgreSQL incluent une collection utile d'outils pour traduire différents types de données (date/heure, entier, virgule flottante, numérique) en chaînes formatées et traduire les chaînes formatées en types de données uniques. Désormais, nous devons parfois aussi convertir les fuseaux horaires. Le timing est toujours enregistré en UTC dans les horodatages PostgreSQL pour le formulaire de données de fuseau horaire, mais il est affiché par défaut dans le navigateur, la session ou l'heure locale de l'utilisateur. L'une de ses fonctions d'assistance sur laquelle nous nous sommes appuyés est la méthode TO_CHAR(), qui permet des horodatages et des horodatages avec fuseau horaire, entre autres formes, et vous permet d'organiser les éléments d'un horodatage comme bon vous semble. Un horodatage, une double précision, la durée, un nombre ou une valeur numérique peuvent tous être convertis en une chaîne à l'aide de la méthode PostgreSQL TO_CHAR(). Il semble y avoir une méthode à un seul argument, 'to_timestamp', qui prend un argument en double précision et se transforme de l'époque Unix en horodatage en utilisant le fuseau horaire. Nous allons vous montrer comment faire quelque chose à ce sujet dans cet article. Regardons d'abord de plus près to_char().

Syntaxe:

La syntaxe générale de la fonction to_char() est la suivante :

>> To_char( expression, format );

La méthode TO_CHAR() dans PostgreSQL a besoin de deux assertions :

Il existe deux types d'horodatage disponibles dans PostgreSQL :

Et voici le problème : le formulaire de données d'horodatage standard ignore les fuseaux horaires. Et c'est une nécessité SQL (comment cela a pu se produire semble au-delà). Notre objectif principal est d'apprendre l'horodatage to_Char() avec un fuseau horaire. Pour commencer à travailler sur PostgreSQL avec la fonction 'to_char()', ouvrez le shell de ligne de commande PostgreSQL et fournissez les valeurs de paramètre pour le serveur, la base de données, le numéro de port, le nom d'utilisateur et le mot de passe obligatoires. Ne remplissez pas ces considérations si vous devez utiliser les paramètres désignés par défaut, comme indiqué dans l'image ci-dessous.

To_char() pour le numéro de chaîne

Pour comprendre le concept de la fonction to_Char() utilisant l'horodatage avec fuseau horaire, vous devez d'abord essayer l'exemple des nombres de chaîne. Nous avons donc un numéro '1897' et nous allons le convertir en '9999.Format 99' en utilisant la requête ci-dessous. À partir de la sortie ci-dessous, vous pouvez voir que le numéro de chaîne a été converti au format spécifié.

>> SELECTIONNER to_char(1897, '9999.99');

Voici une autre illustration pour la conversion. Cette fois, nous avons converti un nombre dans un format différent contenant une "virgule". Le caractère 'G' sera utilisé pour spécifier une virgule.

>> SELECT to_char(367.78, '9G999.99');

Horodatage To_char avec TimeZone

Pour comprendre le concept d'horodatage avec fuseau horaire, considérons un exemple simple. Supposons que vous soyez au « Pakistan », donc votre fuseau horaire doit être « PKT » pour le moment.

Exemple 01 :

Essayons de récupérer l'horodatage actuel dans la requête SELECT tout en le convertissant au format Date-heure, comme indiqué dans la requête ci-dessous. Le terme « TZ » est utilisé pour redonner le fuseau horaire actuel. La sortie affiche le jour, la date, l'heure et le fuseau horaire.

>> SELECT to_char(CURRENT_TIMESTAMP, 'Jour lun jj, aaaa HH12:MI AM (TZ)');

Changeons notre fuseau horaire en 'Europe/Rome'.

>> SET TimeZone= 'Europe/Rome';

Vous obtiendrez une heure, une date et un fuseau horaire différents en essayant la même requête SELECT, comme indiqué.

Exemple 02 :

Lorsque vous spécifiez le fuseau horaire dans la requête SELECT, la sortie n'affichera pas le fuseau horaire actuel selon la sortie ci-dessous.

>> SELECT to_char(CURRENT_TIMESTAMP AU FUSEAU HORAIRE 'Asie/Jérusalem', 'aaaa HH12:MI AM (TZ)');

Exemple 03 :

Créons une table rapide nommée 'time' avec deux champs. L'un est de type TIMESTAMP et l'autre de type TIMESTAMPTZ.

>> CREATE TABLE time( without_timezone TIMESTAMP, with_timezone TIMESTAMPTZ);

Vérifions maintenant le fuseau horaire actuel que nous avons utilisé dans notre système à l'aide de la commande SHOW dans le shell comme suit :

>> AFFICHER le fuseau horaire ;

Vous devez maintenant insérer les valeurs actuelles de la date et de l'heure du fuseau horaire actuel que vous avez utilisé sur votre appareil dans le tableau 'time' en utilisant la fonction 'now()' comme indiqué ci-dessous.

>> INSÉRER DANS LES VALEURS de temps( maintenant(), maintenant());

Vous pouvez maintenant récupérer l'enregistrement de la table 'time' en utilisant la requête SELECT comme ci-dessous. La colonne 'without_timezone' affiche la date et l'heure actuelles sans fuseau horaire, tandis que la colonne 'with_timezone' affiche l'heure locale avec le fuseau horaire complètement.

>> SELECT * FROM heure;

Modifions le fuseau horaire en « US/EST » à partir de la requête ci-dessous.

>> RÉGLER LE FUSEAU HORAIRE DE LA SESSION « US/EST » ;

Maintenant, vérifions à nouveau le tableau. Vous verrez comment la valeur de la colonne 'with_timezone' a été affichée en fonction du fuseau horaire 'US/EASTERN', mais la valeur de 'without_timezone' est la même qu'avant.

>> SELECT * FROM heure;

Exemple 04 :

Ayons quelques exemples supplémentaires pour la méthode to_char(). Supposons le même tableau ci-dessus « heure ». Nous allons convertir la valeur de la colonne 'without_timezone' en une chaîne composée d'heures, de minutes, de secondes et de fuseau horaire. Essayons la requête SELECT en utilisant la méthode to_char() pour convertir la valeur de la colonne 'without_timezone'. Nous avons mentionné 'TZ' dans notre requête, mais il n'affichera pas le fuseau horaire car la valeur de la colonne ne se compose pas du fuseau horaire. La commande indiquée ci-dessous donne la sortie :

>> SELECT to_char(without_timezone, 'HH12:MI:SS TZ') FROM time;

Essayons maintenant la même requête dans le cas de l'autre colonne 'with_timezone', pour la convertir en la chaîne d'heures, minutes, secondes et fuseau horaire. Cette fois, il affichera également le fuseau horaire avec l'heure en utilisant la requête ci-dessous.

>> SELECT to_char(with_timezone, 'HH12:MI:SS TZ') FROM time;

Conclusion:

Étant donné que le problème avec/sans fuseau horaire affecte plus que le simple partitionnement de table, je vous recommande d'utiliser le type de fuseau horaire chaque fois que cela est possible. Presque toutes les directives ont expliqué comment effectuer une purge en fonction du temps dans PostgreSQL en utilisant les heures locales. Une solution appropriée et sensible au fuseau horaire ajoute peu de complications mais pourrait vous éviter des problèmes à l'avenir.

Tutoriel Shadow of the Tomb Raider pour Linux
Shadow of the Tomb Raider est le douzième ajout à la série Tomb Raider - une franchise de jeux d'action-aventure créée par Eidos Montréal. Le jeu a ét...
Comment booster les FPS sous Linux?
FPS signifie Images par seconde. La tâche du FPS est de mesurer la fréquence d'images dans les lectures vidéo ou les performances de jeu. En termes si...
Meilleurs jeux de laboratoire d'applications Oculus
Si vous êtes propriétaire d'un casque Oculus, vous devez être au courant du chargement latéral. Le chargement latéral est le processus d'installation ...