Vous trouverez ci-dessous trois façons de renvoyer des informations de fuseau horaire à partir d'une valeur datetime dans Oracle Database.
Le EXTRACT()
Fonction
Le EXTRACT(datetime)
La fonction est utilisée pour extraire diverses parties datetime d'une valeur datetime. Cela inclut les informations de fuseau horaire.
Voici un exemple :
SELECT EXTRACT(
TIMEZONE_REGION FROM TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin'
)
FROM DUAL;
Résultat :
Australia/Darwin
Dans ce cas, j'ai utilisé le TIMEZONE_REGION
argument pour extraire la région du fuseau horaire.
Les arguments disponibles pour extraire diverses informations de fuseau horaire sont :
TIMEZONE_HOUR
TIMEZONE_MINUTE
TIMEZONE_REGION
TIMEZONE_ABBR
Il est également possible d'utiliser un TIMEZONE_OFFSET
argument, bien que cela n'apparaisse pas dans la syntaxe documentée d'Oracle pour cette fonction.
Voici un exemple d'obtention de l'abréviation du fuseau horaire :
SELECT
EXTRACT(TIMEZONE_ABBR FROM TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin')
FROM DUAL;
Résultat :
ACST
Notez que, lors de l'utilisation des arguments de fuseau horaire ci-dessus, la valeur datetime doit correspondre à une expression de type de données TIMESTAMP WITH TIME ZONE
ou TIMESTAMP WITH LOCAL TIME ZONE
.
Le EXTRACT()
la fonction accepte également des arguments pour d'autres parties datetime, telles que YEAR
, MONTH
, HOUR
, etc.
Le TO_CHAR(datetime)
Fonction
Nous pouvons également utiliser le TO_CHAR(datetime)
fonctionnent comme une méthode alternative pour obtenir des informations sur le fuseau horaire à partir d'une valeur datetime.
Cette fonction accepte la date/heure ou la valeur d'intervalle comme premier argument et un modèle de format comme deuxième argument. La fonction convertit ensuite la valeur en un type de données de VARCHAR2
dans le format spécifié.
Le modèle de format spécifie le format pour lequel renvoyer la valeur datetime/intervalle. Le modèle de format consiste en un ou plusieurs éléments de format. Cela nous permet d'élaborer soigneusement les résultats pour refléter le format souhaité.
Si nous voulons uniquement renvoyer les informations de fuseau horaire, nous pouvons utiliser l'un des éléments de format à cette fin spécifique.
Il existe quelques éléments de format différents que nous pouvons utiliser lors du retour des informations de fuseau horaire à partir d'une valeur datetime.
Commençons par le TZR
élément de format :
SELECT TO_CHAR(
TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin',
'TZR'
)
FROM DUAL;
Résultat :
AUSTRALIA/DARWIN
Cet élément de format renvoie la région du fuseau horaire. Si la valeur datetime inclut uniquement le décalage de fuseau horaire, celui-ci est renvoyé à la place.
Le TZD
L'élément de format peut être utilisé pour renvoyer des informations sur l'heure d'été. Il renvoie les informations de fuseau horaire sous une forme abrégée.
Exemple :
SELECT TO_CHAR(
TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin',
'TZD'
)
FROM DUAL;
Résultat :
ACST
Alternativement, nous pouvons utiliser le TZH
et TZM
éléments de format pour renvoyer les heures et les minutes du fuseau horaire, en fonction du décalage du fuseau horaire.
SELECT TO_CHAR(
TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin',
'TZH:TZM'
)
FROM DUAL;
Résultat :
+09:30
Le TZ_OFFSET()
Fonction
Le TZ_OFFSET()
La fonction renvoie le décalage de fuseau horaire correspondant à l'argument en fonction de la date d'exécution de l'instruction.
Voici un exemple d'utilisation de TZ_OFFSET()
pour renvoyer le décalage de fuseau horaire en fonction de la région de fuseau horaire renvoyée par le EXTRACT()
fonction :
SELECT TZ_OFFSET(
EXTRACT(TIMEZONE_REGION FROM TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin')
)
FROM DUAL;
Résultat :
+09:30
Nous pouvons également passer SESSIONTIMEZONE
ou DBTIMEZONE
à TZ_OFFSET()
pour renvoyer respectivement le fuseau horaire de notre session actuelle et de notre base de données :
SELECT
TZ_OFFSET(SESSIONTIMEZONE) AS "Session",
TZ_OFFSET(DBTIMEZONE) AS "DB"
FROM DUAL;
Résultat :
Session DB __________ _________ +10:00 +00:00