PostgreSQL-muotoilumenetelmät sisältävät hyödyllisen kokoelman työkaluja erilaisten tietotyyppien (päivämäärä / aika, kokonaisluku, liukuluku, numeerinen) kääntämiseen alustettuihin merkkijonoihin ja muotoiltujen merkkijonojen kääntämiseen takaisin ainutlaatuisiin tietotyyppeihin. Tästä lähtien joskus meidän on myös muunnettava aikavyöhykkeet. Ajoitus tallennetaan aina UTC-muodossa PostgreSQL-aikaleimoissa aikavyöhyketietolomakkeelle, mutta se näytetään oletuksena selaimessa, istunnossa tai käyttäjän paikallista aikaa. Yksi sen aputoiminnoista, joihin olemme tottuneet luottamaan, on TO_CHAR () -menetelmä, joka sallii aikaleimojen ja aikavyöhykkeellä varustettujen aikaleimojen lisäksi muun muodon ja antaa sinun järjestää haluamasi aikaleiman osat. Aikaleima, kaksoistarkkuus, kesto, luku tai numeerinen arvo voidaan muuntaa merkkijonoksi PostgreSQL TO_CHAR () -menetelmällä. Näyttää olevan yhden argumentin menetelmä 'to_timestamp', joka vie kaksitarkkuuden argumentin ja muuntaa Unix-aikakaudesta aikaleiman käyttämällä aikavyöhykettä. Näytämme sinulle, miten tehdä jotain asialle tässä viestissä. Katsotaan ensin tarkemmin to_char ().
Syntaksi:
To_char () -funktion yleinen syntakse on seuraava:
>> To_char (lauseke, muoto);TO_CHAR () -menetelmä PostgreSQL: ssä vaatii kaksi väitettä:
- Ilmaisu: Aikaleimaa, kestoa, lukua, kaksoistarkkuutta tai numeerista arvoa, joka käännetään merkkijonoksi tietyn muodon mukaan, voidaan käyttää lausekkeina.
- Muoto: Tyyli, jolla tulostusmerkkijono näytetään. Muoto voi olla erilainen lauseketyypin mukaan, esim.g., numero, päivämäärä.
PostgreSQL: ssä on saatavana kaksi aikaleimatyyppiä:
- Aikaleima: ilman aikavyöhykettä.
- Timestamptz: aikavyöhykkeellä.
Ja tässä on kysymys: tavallinen aikaleiman tietolomake ei tunne aikavyöhykkeitä. Ja se on SQL-välttämättömyys (miten se olisi voinut tapahtua, näyttää siltä, että se ei ole). Päätavoitteemme on oppia to_Char () aikaleima aikavyöhykkeellä. Aloita PostgreSQL: n käyttö 'to_char ()' -toiminnolla avaamalla PostgreSQL-komentorivin kuori ja toimittamalla pakollisen palvelimen, tietokannan, portin numeron, käyttäjänimen ja salasanan parametriarvot. Jätä nämä näkökohdat täyttämättä, jos sinun on käytettävä määritettyjä oletusparametreja alla olevan kuvan mukaisesti.
To_char () merkkijonolle
Jos haluat ymmärtää funktion to_Char () käsitteen käyttämällä aikaleimaa ja aikavyöhykettä, sinun on ensin kokeiltava esimerkkiä merkkijonoista. Joten meillä on luku '1897', ja muunnamme sen numeroksi '9999.99 '-muoto käyttämällä alla olevaa kyselyä. Alla olevasta lähdöstä näet, että merkkijononumero on muunnettu määritettyyn muotoon.
>> SELECT to_char (1897, '9999.99 ');
Tässä on toinen esimerkki muunnosta varten. Tällä kertaa olemme muuntaneet numeron toiseen muotoon, jossa on 'pilkku'. Merkkiä 'G' käytetään pilkun määrittämiseen.
>> SELECT to_char (367.78, '9G999.99 ');
To_char-aikaleima aikavyöhykkeellä
Tarkastellaan yksinkertaista esimerkkiä ymmärtääksemme aikaleiman ja aikavyöhykekonseptin. Oletetaan, että olet Pakistanissa, joten aikavyöhykkeesi on oltava tällä hetkellä PKT.
Esimerkki 01:
Yritetään hakea nykyinen aikaleima SELECT-kyselystä muunnettaessa se päiväys-aika-muotoon, kuten alla olevassa kyselyssä näkyy. Termiä 'TZ' käytetään antamaan takaisin nykyinen aikavyöhyke. Lähdössä näkyy päivä, päivämäärä, aika ja aikavyöhyke.
>> SELECT to_char (CURRENT_TIMESTAMP, 'päivä ma pp, vvvv HH12: MI AM (TZ)');
Vaihdetaan aikavyöhykkeemme Eurooppaan / Roomaan.
>> SET aikavyöhyke = 'Eurooppa / Rooma';
Saat eri ajan, päivämäärän ja aikavyöhykkeen, kun yrität samaa SELECT-kyselyä, kuten kuvassa.
Esimerkki 02:
Kun määrität aikavyöhykkeen SELECT-kyselyssä, lähtö ei näytä nykyistä aikavyöhykettä alla olevan lähdön mukaisesti.
>> SELECT to_char (CURRENT_TIMESTAMP AIKAVyöhykkeellä 'Aasia / Jerusalem', 'vvvv HH12: MI AM (TZ)');
Esimerkki 03:
Luodaan pikataulukko nimeltä aika, jossa on kaksi kenttää. Yksi on TIMESTAMP-tyyppistä ja toinen on TIMESTAMPTZ-tyyppiä.
>> LUO TAULUKON aika (ilman_aika-aluetta TIMESTAMP, ilman aikavyöhykettä TIMESTAMPTZ);
Tarkistetaan nyt nykyinen aikavyöhyke, jota olemme käyttäneet järjestelmässämme, käyttämällä kuoressa olevaa SHOW-komentoa seuraavasti:
>> NÄYTÄ aikavyöhyke;
Nyt sinun on lisättävä laitteellasi käyttämäsi nykyisen aikavyöhykkeen päivämäärän ja kellonajan nykyiset arvot taulukkoon 'aika' käyttämällä 'nyt () -toimintoa alla olevan kuvan mukaisesti.
>> INSERT INTO ARVOT (nyt (), nyt ());
Nyt voit hakea tietueen taulukosta 'time' käyttämällä SELECT-kyselyä alla esitetyllä tavalla. Sarake 'without_timezone' näyttää nykyisen päivämäärän ja kellonajan ilman aikavyöhykettä, kun taas sarake 'with_timezone' näyttää paikallisen ajan ja aikavyöhykkeen kokonaan.
>> SELECT * alkaen;
Vaihdetaan aikavyöhykkeeksi US / EASTERN alla olevasta kyselystä.
>> MÄÄRITÄ ISTUNNON AIKAVYÖHYKE 'US / EASTERN';
Tarkastellaan nyt taulukko uudelleen. Näet, kuinka "with_timezone" -sarakkeen arvo on näytetty aikavyöhykkeen "US / EASTERN" mukaan, mutta arvon "without_timezone" arvo on sama kuin aiemmin.
>> VALITSE * AJASTETTU;
Esimerkki 04:
Otetaan lisää esimerkkejä to_char () -menetelmälle. Oletetaan sama taulukon yläpuolella oleva aika. Muunamme sarakkeen '' ilman aikavyöhykettä '' arvon merkkijonoksi, joka koostuu tunneista, minuuteista, sekunneista ja aikavyöhykkeestä. Kokeillaan SELECT-kyselyä käyttämällä to_char () -menetelmää muunnettaessa sarakkeen arvo 'ilman_väliaikaa'. Olemme maininneet kyselyssä 'TZ', mutta se ei näytä aikavyöhykettä, koska sarakkeen arvo ei koostu aikavyöhykkeestä. Alla mainittu komento antaa lähdön:
>> SELECT to_char (ilman aikavyöhykettä, 'HH12: MI: SS TZ') AJASTA;
Yritetään nyt samaa kyselyä toisen sarakkeen 'with_timezone' tapauksessa muunnettaessa se tuntien, minuuttien, sekuntien ja aikavyöhykkeen merkkijonoksi. Tällä kertaa se näyttää aikavyöhykkeen ajan myötä myös alla olevan kyselyn avulla.
>> SELECT to_char (aikavyöhykkeellä, 'HH12: MI: SS TZ') AIKAISESTA;
Päätelmä:
Koska aikavyöhyke / ilman aikavyöhykettä -ongelma vaikuttaa muuhun kuin vain taulukon osiointiin, suosittelen käyttämään aikavyöhyketyyppiä aina kun mahdollista. Lähes kaikissa ohjeissa keskusteltiin siitä, miten ajasta riippuvainen puhdistus tehdään PostgreSQL: ssä paikallista tuntia käyttäen. Oikea, aikavyöhykeherkkä ratkaisu lisää vähän komplikaatioita, mutta voi säästää ongelmista tulevaisuudessa.