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: Sortie Toad pour la requête

Quelle est la cause de la différence de temps? L'heure du serveur est égale à la valeur SYSDATE

36
demandé sur Mohsen Kashi 2013-07-29 14:51:02

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.

54
répondu Alex Poole 2016-08-30 16:10:30

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.

12
répondu RaMs_YearnsToLearn 2014-05-12 11:10:59

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.

3
répondu Harshit 2013-07-29 11:26:47
  • 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.
1
répondu reddy 2016-04-07 10:16:15

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

0
répondu Amir Abe 2017-12-15 18:57:34
  1. 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"
  2. now() renvoie datetime à l'exécution de l'instruction time, c'est-à-dire "yyyy-mm-dd hh: mm: ss"
  3. 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.
-2
répondu sohan kumawat 2017-06-07 12:57:31