PostgreSQL

PostgreSQL To_char Tijdstempel Met Tijdzone

PostgreSQL To_char Tijdstempel Met Tijdzone

PostgreSQL-opmaakmethoden omvatten een handige verzameling hulpmiddelen voor het vertalen van verschillende gegevenstypen (datum/tijd, geheel getal, drijvende komma, numeriek) naar opgemaakte tekenreeksen en het terugvertalen van opgemaakte tekenreeksen naar unieke gegevenstypen. Voortaan moeten we soms ook tijdzones omrekenen. De timing wordt altijd vastgelegd in UTC in PostgreSQL-tijdstempels voor tijdzonegegevens, maar wordt standaard weergegeven in de browser, sessie of de lokale tijd van de gebruiker. Een van de hulpfuncties waarop we zijn gaan vertrouwen, is de methode TO_CHAR() die tijdstempels en tijdstempels met onder andere tijdzones mogelijk maakt, en waarmee u de delen van een tijdstempel kunt rangschikken zoals u dat wilt. Een tijdstempel, een dubbele precisie, de duur, een getal of een numerieke waarde kunnen allemaal worden geconverteerd naar een tekenreeks met behulp van de PostgreSQL TO_CHAR()-methode. Er lijkt een methode met één argument te zijn, 'to_timestamp', die een argument met dubbele precisie nodig heeft en transformeert van Unix-tijdperk naar tijdstempel met behulp van tijdzone. In dit bericht laten we je zien hoe je hier iets aan kunt doen. Laten we eerst to_char() eens nader bekijken.

Syntaxis:

De algemene syntaxis voor de functie to_char() is als volgt:

>> To_char (uitdrukking, formaat);

De TO_CHAR() methode in PostgreSQL heeft twee beweringen nodig:

Er zijn twee soorten tijdstempels beschikbaar in PostgreSQL:

En hier is het probleem: het standaard tijdstempelgegevensformulier kent geen tijdzones. En het is een SQL-noodzaak (hoe het had kunnen gebeuren lijkt verder te gaan). Onze belangrijkste focus is om te leren to_Char() tijdstempel met een tijdzone. Om aan de PostgreSQL te werken met de functie 'to_char()', opent u de PostgreSQL-opdrachtregelshell en levert u de parameterwaarden voor de verplichte server, database, poortnummer, gebruikersnaam en wachtwoord. Laat deze overwegingen niet ingevuld als u de standaard aangewezen parameters moet gebruiken, zoals weergegeven in de onderstaande afbeelding:.

To_char() Voor tekenreeksnummer

Om het concept van de functie to_Char() te begrijpen met behulp van tijdstempel met tijdzone, moet u eerst het voorbeeld van tekenreeksnummers proberen. Dus we hebben een nummer '1897' en we zullen het omzetten naar de '9999'.99'-indeling met behulp van de onderstaande query. Uit de onderstaande uitvoer kunt u zien dat het tekenreeksnummer is geconverteerd naar het opgegeven formaat.

>> SELECTEER naar_char (1897, '9999).99');

Hier is nog een illustratie voor conversie:. Deze keer hebben we een getal geconverteerd naar een ander formaat met 'komma' erin. Het teken 'G' wordt gebruikt om een ​​komma op te geven.

>> SELECTEER naar_char (367.78, '9G999.99');

To_char Tijdstempel met TimeZone

Laten we een eenvoudig voorbeeld bekijken om het concept Tijdstempel met tijdzone te begrijpen:. Stel dat u zich in 'Pakistan' bevindt, dus uw tijdzone moet nu 'PKT' zijn.

Voorbeeld 01:

Laten we proberen de huidige tijdstempel in de SELECT-query op te halen terwijl deze wordt geconverteerd naar de datum-tijd-indeling, zoals weergegeven in de onderstaande query. De term 'TZ' wordt gebruikt om de huidige tijdzone terug te geven. De uitvoer geeft de dag, datum, tijd en tijdzone weer.

>> SELECT to_char (CURRENT_TIMESTAMP, 'Dag ma dd, jjjj HH12:MI AM (TZ)');

Laten we onze tijdzone veranderen in 'Europa/Rome'.

>> SET TimeZone= 'Europa/Rome';

U krijgt een andere tijd, datum en tijdzone als u dezelfde SELECT-query probeert, zoals weergegeven.

Voorbeeld 02:

Wanneer u de tijdzone opgeeft in de SELECT-query, toont de uitvoer niet de huidige tijdzone zoals in de onderstaande uitvoer.

>> SELECT to_char (CURRENT_TIMESTAMP IN TIJDZONE 'Azië/Jeruzalem', 'yyyy HH12:MI AM (TZ)');

Voorbeeld 03:

Laten we een snelle tabel maken met de naam 'time' met twee velden. De ene is van het type TIMESTAMP en de andere is van het type TIMESTAMPTZ.

>> MAAK TABEL tijd (zonder_timezone TIMESTAMP, with_timezone TIMESTAMPTZ);

Laten we nu de huidige tijdzone die we in ons systeem hebben gebruikt, controleren met behulp van het SHOW-commando in de shell als volgt:

>> TOON tijdzone;

Nu moet u de huidige waarden van de datum en tijd van de huidige tijdzone die u op uw apparaat heeft gebruikt in de tabel 'tijd' invoegen met behulp van de 'now()'-functie zoals hieronder weergegeven.

>> INSERT IN DE tijdWAARDEN (nu(), nu());

Nu kunt u het record uit de tabel 'time' halen met behulp van de SELECT-query zoals hieronder:. De kolom 'without_timezone' toont de huidige datum en tijd zonder tijdzone, terwijl de kolom 'with_timezone' de lokale tijd toont met de tijdzone volledig.

>> KIES * VANAF tijd;

Laten we de tijdzone wijzigen in 'US/EASTERN' van de onderstaande zoekopdracht.

>> STEL SESSIETIJDZONE 'US/EASTERN' in;

Laten we nu nog eens naar de tafel kijken. U zult zien hoe de waarde van de kolom 'with_timezone' is weergegeven volgens tijdzone 'US/EASTERN', maar de waarde van 'without_timezone' is hetzelfde als voorheen.

>> KIES * VANAF tijd;

Voorbeeld 04:

Laten we nog wat voorbeelden geven voor de to_char() methode. Neem dezelfde bovenstaande tabel 'tijd' aan. We zullen de kolom 'without_timezone'-waarde converteren naar een tekenreeks die bestaat uit uren, minuten, seconden en tijdzone. Laten we de SELECT-query proberen met de methode to_char() voor het converteren van de kolomwaarde 'without_timezone'. We hebben 'TZ' genoemd in onze zoekopdracht, maar het zal de tijdzone niet tonen omdat de kolomwaarde niet uit de tijdzone bestaat. Het onderstaande commando geeft de output:

>> SELECT to_char (without_timezone, 'HH12:MI:SS TZ') VANAF tijd;

Laten we nu dezelfde query proberen in het geval van de andere kolom 'with_timezone', om deze te converteren naar de reeks uren, minuten, seconden en tijdzone. Deze keer zal het ook de tijdzone met tijd tonen met behulp van de onderstaande vraag.

>> SELECT to_char (with_timezone, 'HH12:MI:SS TZ') VANAF tijd;

Conclusie:

Aangezien het probleem met/zonder tijdzone meer van invloed is dan alleen het partitioneren van tabellen, raad ik u aan om waar mogelijk het type tijdzone te gebruiken. Bijna alle richtlijnen bespraken hoe tijdsafhankelijk opschonen in PostgreSQL met behulp van lokale uren. Een goede, tijdzonegevoelige oplossing voegt weinig complicaties toe, maar kan u in de toekomst van problemen behoeden.

Beste spellen om te spelen met handtracking
Oculus Quest introduceerde onlangs het geweldige idee van handtracking zonder controllers. Met een steeds toenemend aantal games en activiteiten die f...
OSD-overlay tonen in Linux-apps en -games op volledig scherm
Het spelen van games op volledig scherm of het gebruik van apps in de modus volledig scherm zonder afleiding kan u afsnijden van relevante systeeminfo...
Top 5 Game Capture-kaarten
We hebben allemaal gezien en genoten van streaming gameplays op YouTube. PewDiePie, Jakesepticye en Markiplier zijn slechts enkele van de beste gamers...