2015-05-06 3 views
5

Ho due timestamp in formato stringa 2015-05-06T15:39:00 e 2015-04-06T15:39:00.query sql oracle per record con data e ora tra due timestamp

Qual è la query sql per Oracle che posso interrogare tutti i record nella tabella che ha data/ora che rientra in questo intervallo.

+0

Convertire una stringa dateTime '2015-05-06T15: 39: 00' e' 2015-04-06T15: 39: 00' in un formato timestamp che può essere usato per interrogare per i record che rientra all'interno di questo range usando sql in oracle db? – user1746050

risposta

0
SELECT * 
FROM yourTable 
WHERE timestamps >= TO_DATE('2015-05-06T15:39:00', 'YYYY-MM-DD"T"HH24:MI:SS') 
AND timestamps <= TO_DATE('2015-04-06T15:39:00', 'YYYY-MM-DD"T"HH24:MI:SS') 
+0

non funziona. Innanzitutto, il timestamp deve essere circondato da "". In secondo luogo, mostra l'errore, non un mese valido. – user1746050

+0

Vedere la risposta aggiornata – sqluser

+0

In questione non esiste il fuso orario, es. 'Z' alla fine –

5

E con modo alternativo si può usare tra

SELECT * 
FROM tab1 
WHERE timestamps BETWEEN TO_DATE ('2015-05-06T15:39:00', 'YYYY-MM-DD"T"HH24:MI:SS') AND TO_DATE('2015-04-06T15:39:00', 'YYYY-MM-DD"T"HH24:MI:SS'); 
0

È necessario convertire il letterale in DATA utilizzando TO_DATE e tenuti maschera di formato per confrontare la colonna timestamp con l'ingresso timestamp Valori.

Setup

SQL> CREATE TABLE t(A TIMESTAMP); 

Table created. 

SQL> 
SQL> INSERT INTO t(A) VALUES(to_date('2015-04-10T15:39:00', 'YYYY-MM-DD"T"HH24:MI:SS')); 

1 row created. 

SQL> INSERT INTO t(A) VALUES(to_date('2015-05-01T15:39:00', 'YYYY-MM-DD"T"HH24:MI:SS')); 

1 row created. 

SQL> INSERT INTO t(A) VALUES(to_date('2015-03-01T15:39:00', 'YYYY-MM-DD"T"HH24:MI:SS')); 

1 row created. 

SQL> COMMIT; 

Commit complete. 

SQL> SELECT * FROM t; 

A 
---------------------------- 
10-APR-15 03.39.00.000000 PM 
01-MAY-15 03.39.00.000000 PM 
01-MAR-15 03.39.00.000000 PM 

Query

SQL> SELECT * 
    2 FROM t 
    3 WHERE A BETWEEN 
    4   to_date('2015-04-06T15:39:00', 'YYYY-MM-DD"T"HH24:MI:SS') 
    5   AND 
    6    to_date('2015-05-06T15:39:00', 'YYYY-MM-DD"T"HH24:MI:SS'); 

A 
-------------------------------------------------------------------------- 
10-APR-15 03.39.00.000000 PM 
01-MAY-15 03.39.00.000000 PM 

Così, ho ottenuto le righe richieste come la mia uscita desiderato.

0

Nessuna delle risposte di cui sopra ha funzionato per me.

tuttavia, First è sufficiente sostituire 'T' che hai con un ' '(spazio) e utilizzare al di sotto di query, che ha lavorato per me

select * from tb1 
    where timestamps BETWEEN TO_DATE ('2015-05-06 15:39:00', 'YYYY-mm-dd HH24:MI:SS') 
          AND TO_DATE('2015-04-06 15:39:00', 'YYYY-mm-dd HH24:MI:SS'); 
0

Il sotto è per timestamp e si può cambiare per il tempo necessario

SELECT * 
FROM tbl1 
WHERE timestamp BETWEEN to_date('21/11/2017 23:59:59','dd/MM/rrrr hh24:mi:ss')    
    AND to_date('21/12/2017 15:59:59','dd/MM/rrrr hh24:mi:ss');`