PostgreSql to_char tidsstempel med tidssone

PostgreSql to_char tidsstempel med tidssone

PostgreSQL-formateringsmetoder inkluderer en nyttig samling av verktøy for å oversette forskjellige datatyper (dato/tid, heltall, flytende punkt, numerisk) til formaterte strenger og oversette formaterte strenger tilbake til unike datatyper. Fremover må vi noen ganger også konvertere tidssoner. Tidspunktet er alltid registrert i UTC i PostgreSQL -tidsstempler for data fra tidssonen, men det vises som standard i nettleseren, økt eller brukerens lokale tid. En av hjelperfunksjonene vi har kommet til å stole på er To_Char () -metoden, som gjør det mulig. En tidsstempel, en dobbeltpresisjon, varigheten, et tall eller en numerisk verdi kan alle konverteres til en streng ved hjelp av PostgreSql to_char () -metoden. Det ser ut til å være en metode for enkeltargumenter, 'to_timestamp', som tar et dobbeltpresisjonsargument og forvandler seg fra UNIX Epoch til tidsstempel ved hjelp av tidssone. Vi viser deg hvordan du gjør noe med dette i dette innlegget. La oss se nærmere på to_char () først.

Syntaks:

Generell syntaks for to_char () -funksjonen er som følger:

>> to_char (uttrykk, format);

TO_CHAR () -metoden i PostgreSQL trenger to påstander:

  • Uttrykk: En tidsstempel, en varighet, et tall, en dobbel presisjon eller en numerisk verdi som er oversatt til en streng i henhold til et bestemt format, kan alle brukes som uttrykk.
  • Format: Stilen som utgangsstrengen vil bli vist. Formatet kan være forskjellig i henhold til uttrykkstypen, e.g., nummer, dato.

Det er to tidsstempeltyper tilgjengelig i PostgreSQL:

  • Tidsstempel: uten tidssone.
  • Timestamptz: med tidssone.

Og her er problemet: Standard tidsskjema for tidsstempel er uvitende om tidssoner. Og det er en SQL -nødvendighet (hvordan det kunne ha skjedd virker utover). Vårt hovedfokus er å lære å_char () tidsstempel med tidssone. For å begynne å jobbe med PostgreSQL med 'TO_CHAR ()' -funksjonen, åpner du PostgreSQL-kommandolinjeskallet og leverer parameterverdiene for den obligatoriske serveren, databasen, portnummer, brukernavn og passord. Legg igjen disse hensynene som ikke fylles.

To_char () for strengnummer

For å forstå konseptet med to_char () -funksjonen ved hjelp av tidsstempel med tidssone, har du først å prøve eksemplet på strengnumre. Så vi har et nummer '1897,' og vi vil konvertere det til '9999.99 'Format ved hjelp av spørringen nedenfor. Fra utgangen nedenfor kan du se at strengnummeret er konvertert til det spesifiserte formatet.

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

Her er en annen illustrasjon for konvertering. Denne gangen har vi konvertert et tall til et annet format som har "komma" i det. Karakteren 'G' vil bli brukt til å spesifisere et komma.

>> Velg to_char (367.78, '9g999.99 ');

To_char tidsstempel med tidssone

For å forstå tidsstempelet med tidssonekonsept, la oss vurdere et enkelt eksempel. Anta at du er i 'Pakistan', så tidssonen din må være 'PKT' akkurat nå.

Eksempel 01:

La oss prøve å hente gjeldende tidsstempel i SELECT-spørringen mens du konverterer det til dato-tidsformat, som vist i spørringen nedenfor. Begrepet 'TZ' brukes til å gi tilbake den nåværende tidssonen. Utgangen viser dag, dato, tid og tidssone.

>> Velg To_Char (Current_Timestamp, 'Day Mon DD, YYYY HH12: MI AM (TZ)');

La oss endre tidssonen til 'Europa/Roma'.

>> Sett tidssone = 'Europa/Roma';

Du vil få en annen tid, dato og tidssone når du prøver den samme valgte spørringen, som vist.

Eksempel 02:

Når du spesifiserer tidssonen i SELECT -spørringen, vil ikke utgangen vise gjeldende tidssone i henhold til utdataene nedenfor.

>> Velg To_Char (Current_Timestamp at Time Zone 'Asia/Jerusalem', 'YYYY HH12: MI AM (TZ)');

Eksempel 03:

La oss lage et raskt bord med navnet 'Time' med to felt. Den ene er av tidsstempel -type, og den andre er Timestamptz -type.

>> Lag tabelltid (uten tidsstempel, med_timezone timestamptz);

La oss nå sjekke den nåværende tidssonen som vi har brukt i systemet vårt ved å bruke show -kommandoen i skallet som følger:

>> Vis tidssone;

Nå må du sette inn gjeldende verdier for datoen og klokkeslettet for den nåværende tidssonen som du har brukt på enheten din i tabellen 'tid' ved å bruke 'Now ()' -funksjonen som vist nedenfor nedenfor.

>> sett inn i tidsverdier (nå (), nå ());

Nå kan du hente posten fra tabellen 'Tid' ved hjelp av SELECT -spørringen som nedenfor. Kolonnen 'Without_timezone' viser gjeldende dato og tid uten tidssone, mens kolonnen 'med_timezone' viser lokal tid med tidssonen helt.

>> velg * fra tid;

La oss endre tidssonen til 'oss/østlige' fra spørringen nedenfor.

>> Sett økt tidssone 'oss/østlige';

La oss nå sjekke bordet igjen. Du vil se hvordan verdien av kolonnen 'med_timezone' er vist i henhold til tidssone 'oss/østlige', men verdien av 'uten_tidszone' er den samme som den var før.

>> velg * fra tid;

Eksempel 04:

La oss ha noen flere eksempler for To_Char () -metoden. Anta den samme tabellen over "tid". Vi vil konvertere kolonnen 'Without_timeZone' -verdien til en streng som består av timer, minutter, sekunder og tidssone. La oss prøve SELECT -spørringen ved hjelp av To_Char () -metoden for å konvertere kolonneverdien 'Uten_timeZone'. Vi har nevnt 'TZ' i spørringen vår, men det vil ikke vise tidssonen fordi kolonneverdien ikke består av tidssonen. Kommandoen for uttalte below gir utdataene:

>> Velg To_Char (uten_timeZone, 'HH12: MI: SS TZ') fra tid;

La oss nå prøve den samme spørringen i tilfelle av den andre kolonnen 'with_timezone', for å konvertere den til strengen timer, minutter, sekunder og tidssone. Denne gangen vil det vise tidssonen med tid også ved å bruke spørringen nedenfor.

>> velg to_char (med_timezone, 'hh12: mi: ss tz') fra tid;

Konklusjon:

Siden med/uten tidssone -problemet påvirker mer enn bare tabellpartisjonering, anbefaler jeg at du bør bruke tidssonetypen når det er praktisk mulig. Nesten alle retningslinjer diskuterte hvordan du gjør tidsavhengig rensing i PostgreSQL ved bruk av lokale timer. En riktig, tidssone-sensitiv løsning gir små komplikasjoner, men kan spare deg for problemer i fremtiden.