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.
-
SYSDATEfournit la date et l'heure d'un serveur. -
CURRENT_DATEfournit la date et l'heure du client.(c'est-à-dire, votre système) -
CURRENT_TIMESTAMPfournit 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,systimestamprenvoie datetime du serveur où la base de données est installée.SYSDATE- renvoie uniquement la date, c'est-à-dire "AAAA-mm-JJ".systimestamprenvoie 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.