2017-07-11 4 views
0

Je veux SQL interroger fetch/select enregistrements qui sont pris seulement de la demi-heure précédente seulement. Par exemple, si mon planificateur s'exécute à 14 heures, puis à nouveau à 2 heures 30, il ne doit sélectionner les lignes entre 14 heures et 14 heures 30 et pas plus tôt, en utilisant la colonne created_timestamp qui stocke l'heure en tant qu'unix format d'époque, par exemple:Requête pour extraire les enregistrements uniquement sous la forme d'une demi-heure avec horodatage au format unix epoch

|created_timestamp| 
|1497355750350 | 
|1497506182344 | 
+0

la colonne created_timestamp est en format numérique – user3436400

+0

Je suis assez sûr que votre question est un double de [ce] (https://stackoverflow.com/questions/10555814/ convert-oracles-timestamp-to-seconds-from-époque). – jeff6times7

Répondre

2

Nous pouvons faire de l'arithmétique avec les dates Oracle. La soustraction d'une date à une autre donne l'intervalle sous la forme d'un nombre fractionnaire. La multiplication par 86400 nous donne le nombre de secondes. Donc, c'est le expoch unix actuel:

(sysdate - date '1970-01-01') * 86400 

Cela signifie que votre requête sera quelque chose comme

select * from your_table 
where created_timestamp >= (:last_run_time - date '1970-01-01') * 86400 

L'astuce est que votre planificateur doit passer dans le temps de la course précédente -last_run_time - récupérer tous les enregistrements qui ont été ajoutés depuis.

0

Vous pouvez faire requête Flashback

SELECT * FROM TABLE 
AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '30' MINUTE); 
+0

La colonne cible est un horodatage d'époque Unix. Son contenu peut donc être différent de l'horodatage du système de base de données – APC

+0

@APC Nécessite-t-il une colonne d'époque? Ça ne marchera pas sans ça? – fg78nc

+0

La question demande d'obtenir un ensemble d'enregistrements basés sur le contenu d'une colonne. Étant donné que nous ne savons pas comment ou quand 'created_timestamp' est rempli, nous ne pouvons pas être certains qu'il existe une correspondance exacte avec l'horodatage du système de base de données. Donc, je pense que votre solution pourrait produire un ensemble de résultats différent de celui que le PO exige. En dehors de toute autre chose, pensez à ce qui se passerait si le travail était retardé de cinq minutes. – APC