Je récupère sur Oracle des données provenant d'une base SQL Server. Dans ces données ce trouve un Timestamp mais moi il me faut un DateTime.
Comment peut-on utiliser un Timestamp SQL Server en Oracle ?
Je récupère sur Oracle des données provenant d'une base SQL Server. Dans ces données ce trouve un Timestamp mais moi il me faut un DateTime.
Comment peut-on utiliser un Timestamp SQL Server en Oracle ?
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
Connais pas ce que c'est le Timestamp dans SQL Server. Un exemple ?
Et puis comment ces données sont récupérées: via un fichier, via un lien direct à la base SQLServer, autre ?
Les données sont récupérées depuis une requête genre
et le timestamp est comme ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT "time", "gateId" FROM dbo.table_name@maestro a WHERE a."gateId" IN (SELECT a."gateId" FROM dbo.table_name@maestro a WHERE a."name" LIKE '%RCO%' AND a."description" IN ('S1', 'DS'));
Code : Sélectionner tout - Visualiser dans une fenêtre à part 1199602800000
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
J'ai testé de cette manière mais ça ne fonctionne pas du tout
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT (TO_DATE ('01-JAN-1900') + 1199606400000) - 2 FROM DUAL;ORA-01858: Caractère non numérique trouvé à la place d'un caractère numérique
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
Après pas mal de tests, ceci fonctionne:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT ( TIMESTAMP '1970-01-01 00:00:00 GMT' + NUMTODSINTERVAL ( SUBSTR (TO_CHAR (1199602800000), 1, LENGTH (TO_CHAR (1199602800000)) - 3), 'SECOND')) AS dte FROM DUAL;
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
J'ai trouvé ici cette information mais il faut encore creuser je pense.
Date and time are stored as two 4-byte integers. The date portion is represented as a count of the number of days offset from a baseline date (1/1/1900) and is stored in the first integer. Permitted values are legal dates between 1st January, 1753 AD and 31st December, 9999 AD. Permitted values in the time portion are legal times in the range 0 to 25920000. Accuracy is to the nearest 3.33 milliseconds with rounding downward. Columns of type DATETIME have a default value of 1/1/1900.
En vrai ce n'est pas un datatype TIMESTAMP SQL-Server, c'est une définition fonctionnelle qui ressemble accessoirement à un timestamp unix.
Par contre je suis toujours épaté par ces formules :
J'ai rajouté le to_number car il est implicitement fait par le SGBD car la fonction NUMTODSINTERVAL prend un nombre en premier argument.
Code : Sélectionner tout - Visualiser dans une fenêtre à part TO_NUMBER(SUBSTR (TO_CHAR (1199602800000), 1, LENGTH (TO_CHAR (1199602800000)) - 3))
Alors qu'une simple division arrondie :
Code : Sélectionner tout - Visualiser dans une fenêtre à part TRUNC(1199602800000 / 1000)
Email : http://scr.im/waldar
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager