Différents horodatage et SYSDATE actuels dans oracle
Après avoir exécuté ce SQL dans oracle 10g:
SELECT SYSDATE, CURRENT_TIMESTAMP FROM DUAL
Je reçois cette sortie étrange:
Quelle est la cause de la différence de temps? L'heure du serveur est égale à la valeur SYSDATE
6 réponses
CURRENT_DATE
et CURRENT_TIMESTAMP
retourner la date et l'heure de la session de fuseau horaire.
SYSDATE
et SYSTIMESTAMP
retourner la date et l'heure système - qui est, du système sur lequel réside la base de données.
Si votre session client n'est pas dans le même fuseau horaire que le serveur sur lequel se trouve la base de données (ou indique que ce n'est pas le cas de toute façon, via vos paramètres NLS), le mélange des fonctions SYS*
et CURRENT_*
renverra des valeurs différentes. Ils sont tous corrects, ils représentent juste des choses différentes. Il semble que votre serveur est (ou pense qu'il est) dans un fuseau horaire + 4: 00, tandis que votre session client est dans un fuseau horaire + 4: 30.
Vous pouvez également voir de petites différences dans le temps si les horloges ne sont pas synchronisées, ce qui ne semble pas être un problème ici.
SYSDATE
, SYSTIMESTAMP
renvoie la Base de données de la date et de l'heure, alors que current_date
, current_timestamp
renvoie la date et l'horodatage de l'endroit où vous travaillez.
Pour par exemple. travaillant depuis L'Inde, j'accède à une base de données située à Paris. à 4: 00PM IST:
select sysdate,systimestamp from dual;
Cela me renvoie la date et l'Heure de Paris:
Résultat
12-MAY-14 12-MAY-14 12.30.03.283502000 PM +02:00
select current_date,current_timestamp from dual;
Cela me renvoie la date et l'Heure de l'Inde:
Résultat
12-MAY-14 12-MAY-14 04.00.03.283520000 PM ASIA/CALCUTTA
Veuillez noter le décalage horaire de 3h30.
SYSDATE renvoie la date système du système sur lequel réside la base de données
CURRENT_TIMESTAMP renvoie la date et l'heure actuelles dans le fuseau horaire de la session, dans une valeur de type de données TIMESTAMP avec fuseau horaire
Exécute cette commande
ALTER SESSION SET TIME_ZONE = '+3:0';
Et il vous fournira le même résultat.
-
SYSDATE
fournit la date et l'heure d'un serveur. -
CURRENT_DATE
fournit la date et l'heure du client.(c'est-à-dire, votre système) -
CURRENT_TIMESTAMP
fournit les données et l'horodatage d'un clinet.
Remarque: SYSDATE-renvoie uniquement la date, c'est-à-dire que "AAAA-mm-JJ" n'est pas correct. SYSDATE renvoie la date système du serveur de base de données, y compris les heures, les minutes et les secondes. Par exemple:
SÉLECTIONNEZ SYSDATE À PARTIR DE DUAL; retourne la sortie similaire à ce qui suit: 15/12/2017 12: 42: 39 pm
-
SYSDATE
,systimestamp
renvoie datetime du serveur où la base de données est installée.SYSDATE
- renvoie uniquement la date, c'est-à-dire "AAAA-mm-JJ".systimestamp
renvoie la date avec l'heure et le fuseau horaire, c'est-à-dire "AAAA-mm-JJ hh: mm: ss: ms timezone" -
now()
renvoie datetime à l'exécution de l'instruction time, c'est-à-dire "yyyy-mm-dd hh: mm: ss" -
CURRENT_DATE
- "AAAA-MM-JJ",CURRENT_TIME
- "hh: mm: ss",CURRENT_TIMESTAMP
- "AAAA-mm-JJ HH:mm:ss fuseau horaire". Ceux - ci sont liés à un temps d'insertion record.