Oracle SQL查询时间戳在两个时间戳之间的记录

12

我有两个字符串格式的时间戳:2015-05-06T15:39:002015-04-06T15:39:00

对于Oracle而言,如何查询所有时间戳在这个范围内的记录?请提供相应的SQL查询语句。


将字符串日期时间“2015-05-06T15:39:00”和“2015-04-06T15:39:00”转换为时间戳格式,以便在Oracle数据库中使用SQL查询落在此范围内的记录。 - user1746050
5个回答

25
你可以使用另一种方法,在它们之间进行切换。
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');

6
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')

不起作用。首先,时间戳必须用 ' ' 包围。其次,它显示错误,不是有效的月份。 - user1746050
问题中没有时区,即末尾没有 Z - Wernfried Domscheit

1

以上答案都不适用于我。

然而,首先将您拥有的'T'替换为' '(空格),然后使用以下查询即可,这对我有效。

    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
你需要使用TO_DATE和所需的格式掩码将文字转换为日期,以便将时间戳列与输入的时间戳值进行比较。 设置
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

查询

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

所以,我得到了我想要的输出所需的行。


0
以下是时间戳的代码,您可以根据需要进行更改。
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');`

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接