Les méthodes de formatage postgresql incluent une collection utile d'outils pour traduire différents types de données (date / heure, entier, point flottant, numérique) aux chaînes formatées et traduction des chaînes formatées à des types de données uniques. Désormais, nous devons parfois convertir les fuseaux horaires. Le timing est toujours enregistré dans UTC dans les horodatages postgresql pour le formulaire de données de fuseau horaire, mais il s'affiche par défaut dans le navigateur, la session ou l'heure locale de l'utilisateur. L'une de ses fonctions d'assistance sur lesquelles nous sommes venues est la méthode TO_CHAR (), qui permet des horodatages et des horodatages avec le fuseau horaire, entre autres, et vous permet d'organiser les morceaux d'un horodatage comme vous aimez. 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 vers_char (). Il semble y avoir une méthode à argument unique, `` To_timestamp '', qui prend un argument à double précision et se transforme d'Unix Epoch en horodat. Nous vous montrerons comment faire quelque chose à ce sujet dans ce post. Examinons d'abord un coup de plus sur_char ().
Syntaxe:
La fonction 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 affirmations:
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 aurait pu se produire semble au-delà). Notre objectif principal est d'apprendre à horodatage avec un fuseau horaire. Pour commencer à travailler sur la fonction PostgreSQL avec la fonction 'TO_CHAR ()', ouvrez le shell de ligne de commande PostgreSQL et fournissez les valeurs des paramètres pour le serveur obligatoire, la base de données, le numéro de port, le nom d'utilisateur et le mot de passe. Laissez ces considérations non remplies si vous devez consommer 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 () en utilisant l'horodatage avec le fuseau horaire, vous avez d'abord pour essayer l'exemple des numéros de chaîne. Nous avons donc un nombre «1897» et nous le convertirons 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é.
>> Sélectionnez To_Char (1897, '9999.99 ');Voici une autre illustration de conversion. Cette fois, nous avons converti un nombre en un format différent ayant une «virgule». Le caractère «g» sera utilisé pour spécifier une virgule.
>> Sélectionnez TO_CHAR (367.78, '9G999.99 ');Horodat
Pour comprendre l'horodatage avec le concept de fuseau horaire, considérons un exemple simple. Supposons que vous soyez dans le «Pakistan», donc votre fuseau horaire doit être «pkt» maintenant.
Exemple 01:
Essayons de récupérer le horodat. Le terme «tz» est utilisé pour redonner le fuseau horaire actuel. La sortie affiche le jour, la date, l'heure et le fuseau horaire.
>> Sélectionnez TO_CHAR (Current_timestamp, 'Day Mon DD, Yyyy 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érent lors de la même requête de sélection, comme indiqué.
Exemple 02:
Lorsque vous spécifiez le fuseau horaire dans la requête de sélection, la sortie ne montrera pas le fuseau horaire actuel selon la sortie ci-dessous.
>> Sélectionnez TO_CHAR (current_timestamp au fuseau horaire «Asie / Jérusalem», «Yyyy HH12: Mi Am (tz)»);Exemple 03:
Créons une table rapide nommée 'Time' avec deux champs. L'un est de type horodat.
>> Créer un temps de table (Sans_timeZone TimeStamp, avec_timezone timestamptz);Maintenant, vérifions le fuseau horaire actuel que nous utilisons dans notre système en utilisant 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 «heure» en utilisant la fonction «Now ()» comme indiqué ci-dessous.
>> insérer dans les valeurs de temps (maintenant (), maintenant ());Maintenant, vous pouvez récupérer l'enregistrement à partir du tableau `` temps '' en utilisant la requête sélectionnée comme ci-dessous. La colonne «sans_timezone» affiche la date et l'heure.
>> Sélectionner * à partir du temps;Changeons le fuseau horaire en «États-Unis / oriental» à partir de la requête ci-dessous.
>> Définir le fuseau horaire de la session «US / Eastern»;Maintenant, vérifions la table. 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.
>> Sélectionner * à partir du temps;Exemple 04:
Ayons quelques exemples supplémentaires pour la méthode TO_CHAR (). Supposons le même «temps» au-dessus de la table. Nous allons convertir la valeur de la colonne «sans_timezone» en une chaîne composée d'heures, de minutes, de secondes et de fuseau horaire. Essayons la requête de sélection à l'aide de la méthode TO_CHAR () pour convertir la valeur de la colonne 'sans_timezone'. Nous avons mentionné «TZ» dans notre requête, mais cela ne montrera pas le fuseau horaire car la valeur de la colonne ne comprend pas le fuseau horaire. La commande à croisement indiqué donne la sortie:
>> Sélectionnez To_Char (sans_timezone, 'HH12: MI: SS TZ') à partir du temps;Essayons maintenant la même requête dans le cas de l'autre colonne «avec_timezone», pour la convertir en chaîne d'heures, de minutes, de secondes et de fuseau horaire. Cette fois, il montrera également le fuseau horaire avec le temps en utilisant la requête ci-dessous.
>> Sélectionnez TO_CHAR (avec_timezone, 'hh12: mi: ss tz') à partir du temps;Conclusion:
Étant donné que le problème avec / sans fuseau horaire affecte plus que le partitionnement de la table, je vous recommande d'utiliser le type de fuseau horaire chaque fois que possible. Presque toutes les directives ont discuté de la façon de faire des purgements dépendant 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 les ennuis à l'avenir.