sql >> Database >  >> RDS >> Oracle

3 manieren om de tijdzone te retourneren van een datetime-waarde in Oracle

Hieronder staan ​​drie manieren om tijdzone-informatie te retourneren vanuit een datetime-waarde in Oracle Database.

De EXTRACT() Functie

De EXTRACT(datetime) functie wordt gebruikt voor het extraheren van verschillende datetime-delen uit een datetime-waarde. Dit omvat de tijdzone-informatie.

Hier is een voorbeeld:

SELECT EXTRACT(
TIMEZONE_REGION FROM TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin'
)
FROM DUAL;

Resultaat:

Australia/Darwin

In dit geval gebruikte ik de TIMEZONE_REGION argument om de tijdzone te extraheren.

De beschikbare argumenten voor het extraheren van verschillende tijdzone-informatie zijn:

  • TIMEZONE_HOUR
  • TIMEZONE_MINUTE
  • TIMEZONE_REGION
  • TIMEZONE_ABBR

Het is ook mogelijk om een ​​TIMEZONE_OFFSET . te gebruiken argument, hoewel dit niet voorkomt in de gedocumenteerde syntaxis van Oracle voor deze functie.

Hier is een voorbeeld van het verkrijgen van de afkorting van de tijdzone:

SELECT 
    EXTRACT(TIMEZONE_ABBR FROM TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin')
FROM DUAL;

Resultaat:

ACST

Merk op dat, bij gebruik van de bovenstaande tijdzone-argumenten, de datetime-waarde moet resulteren in een expressie van het gegevenstype TIMESTAMP WITH TIME ZONE of TIMESTAMP WITH LOCAL TIME ZONE .

De EXTRACT() functie accepteert ook argumenten voor andere datetime delen, zoals YEAR , MONTH , HOUR , enz.

De TO_CHAR(datetime) Functie

We kunnen ook de TO_CHAR(datetime) . gebruiken functioneren als een alternatieve methode om tijdzone-informatie op te halen uit een datetime-waarde.

Deze functie accepteert de datetime- of intervalwaarde als het eerste argument en een formaatmodel als het tweede argument. De functie converteert vervolgens de waarde naar een gegevenstype van VARCHAR2 in het gespecificeerde formaat.

Het formaatmodel specificeert het formaat waarvoor de datetime/intervalwaarde moet worden geretourneerd. Het formaatmodel bestaat uit een of meer formaatelementen. Dit stelt ons in staat om de resultaten zorgvuldig te maken om ons gewenste formaat weer te geven.

Als we alleen tijdzone-informatie willen retourneren, kunnen we een van de formaatelementen voor dat specifieke doel gebruiken.

Er zijn een paar verschillende indelingselementen die we kunnen gebruiken bij het retourneren van tijdzone-informatie van een datetime-waarde.

Laten we beginnen met de TZR formaatelement:

SELECT TO_CHAR(
    TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin', 
    'TZR'
    )
FROM DUAL;

Resultaat:

AUSTRALIA/DARWIN

Dit formaatelement retourneert de tijdzoneregio. Als de datetime-waarde alleen de tijdzone-offset bevat, wordt die in plaats daarvan geretourneerd.

De TZD format element kan worden gebruikt om informatie over zomertijd terug te geven. Het geeft de tijdzone-informatie terug in een verkorte vorm.

Voorbeeld:

SELECT TO_CHAR(
    TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin', 
    'TZD'
    )
FROM DUAL;

Resultaat:

ACST

Als alternatief kunnen we de TZH . gebruiken en TZM formaatelementen om de tijdzone-uren en minuten te retourneren, gebaseerd op de tijdzone-offset.

SELECT TO_CHAR(
    TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin', 
    'TZH:TZM'
    )
FROM DUAL;

Resultaat:

+09:30

De TZ_OFFSET() Functie

De TZ_OFFSET() functie retourneert de tijdzone-offset die overeenkomt met het argument op basis van de datum waarop de instructie is uitgevoerd.

Hier is een voorbeeld van het gebruik van TZ_OFFSET() om de tijdzone-offset terug te geven op basis van de tijdzoneregio geretourneerd door de EXTRACT() functie:

SELECT TZ_OFFSET(
    EXTRACT(TIMEZONE_REGION FROM TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin')
)
FROM DUAL;

Resultaat:

+09:30

We kunnen ook SESSIONTIMEZONE doorgeven of DBTIMEZONE naar TZ_OFFSET() om respectievelijk de tijdzone van onze huidige sessie en database terug te geven:

SELECT 
    TZ_OFFSET(SESSIONTIMEZONE) AS "Session",
    TZ_OFFSET(DBTIMEZONE) AS "DB"
FROM DUAL;

Resultaat:

   Session        DB 
__________ _________ 
+10:00     +00:00    

  1. Booleaanse parameter doorgeven aan Oracle-procedure C#

  2. Eenvoudige parametrering en triviale plannen - deel 2

  3. Converteer alle records in postgre naar Titlecase, eerste letter hoofdletters

  4. Een standaard MySQL/MariaDB-gegevensmap in Linux wijzigen