web-dev-qa-db-fra.com

requête SQL Oracle pour les enregistrements dont l'horodatage se situe entre deux horodatages

J'ai deux horodatages au format String 2015-05-06T15:39:00 et 2015-04-06T15:39:00.

Quelle est la requête SQL pour Oracle que je peux interroger tous les enregistrements de la table dont l'horodatage se situe dans cette plage.

8
user1746050

Et avec une manière alternative, vous pouvez utiliser entre

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');
15
Moudiz
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')
2
sqluser

Celui ci-dessous est pour l'horodatage et vous pouvez changer pour votre temps requis

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');`
0
user9148631

Vous devez convertir le littéral en DATE en utilisant TO_DATE et obligatoire masque de format pour comparer la colonne d'horodatage avec les valeurs d'entrée horodatage.

Configuration

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

Requête

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

J'ai donc obtenu les lignes requises comme sortie souhaitée.

0
Lalit Kumar B

Aucune des réponses ci-dessus n'a fonctionné pour moi.

cependant, remplacez tout simplement 'T' que vous avez par un '' (espace) et utilisez la requête ci-dessous qui a fonctionné pour moi

    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
tk_