2015-05-06 4 views
5

Ich habe zwei Zeitstempel im String-Format 2015-05-06T15:39:00 und 2015-04-06T15:39:00.Oracle SQL-Abfrage für Datensätze mit Zeitstempel, der zwischen zwei Zeitstempeln

Was ist die SQL-Abfrage für Oracle, die ich alle Datensätze in der Tabelle abfragen kann, die Zeitstempel hat, die in diesem Bereich liegt.

+0

Konvertieren eine Zeichenfolge Datums- und Uhrzeit '2015-05-06T15: 39: 00 'und' 2015-04-06T15: 39: 00' zu einem Zeitformat, das verwendet werden kann, um Datensätze abzufragen, die in diesem Bereich fällt Verwenden von SQL in Oracle DB? – user1746050

Antwort

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

funktioniert nicht. Zuerst muss der Zeitstempel von '' umgeben sein. Zweitens zeigt es den Fehler, keinen gültigen Monat. – user1746050

+0

Siehe die aktualisierte Antwort – sqluser

+0

In Frage gibt es keine Zeitzone, dh. 'Z' am Ende –

5

Und mit alternativen Art und Weise können Sie zwischen

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

Sie verwenden müssen die wörtliche in DATE TO_DATE und erforderlich Format Maske konvertieren die Timestamp-Spalte mit dem Eingang Zeitstempel vergleichen Werte.

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 

Abfrage

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 

So bekam ich die erforderlichen Zeilen wie meine gewünschte Ausgabe.

0

Keine der obigen Antworten funktionierte für mich.

jedoch zunächst einfach ersetzen ‚T‘ Sie haben mit einem ' ‚(Leerzeichen) und unter Abfrage verwenden, die für mich gearbeitet

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

Die unter einem für Zeitstempel und Sie können Ihre erforderliche Zeit ändern

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');` 
Verwandte Themen