【问题标题】:oracle sql query for records with timestamp that falls between two timestampsoracle sql查询时间戳介于两个时间戳之间的记录
【发布时间】:2015-05-06 07:52:51
【问题描述】:

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

什么是 Oracle 的 sql 查询,我可以查询表中时间戳在此范围内的所有记录。

【问题讨论】:

  • 将字符串 dateTime 2015-05-06T15:39:002015-04-06T15:39:00 转换为时间戳格式,可用于在 oracle db 中使用 sql 查询该范围内的记录?

标签: sql oracle timestamp


【解决方案1】:

你可以使用其他方式

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

【讨论】:

    【解决方案2】:
    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')
    

    【讨论】:

    • 不起作用。首先,时间戳必须用''包围。其次,它显示错误,不是有效月份。
    • 有问题没有时区,即。 Z在最后
    【解决方案3】:

    以上答案都不适合我。

    但是,首先只需将 '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');
    

    【讨论】:

      【解决方案4】:

      您需要使用 TO_DATE 将文字转换为 DATE,并且需要 格式掩码 将时间戳列与输入 timestamp 值进行比较。

      设置

      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
      

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

      【讨论】:

        【解决方案5】:

        以下是时间戳,您可以根据需要更改时间

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

        【讨论】:

          猜你喜欢
          • 2023-02-14
          • 2015-01-15
          • 1970-01-01
          • 1970-01-01
          • 2014-01-28
          • 1970-01-01
          • 1970-01-01
          • 2012-02-02
          • 2020-04-17
          相关资源
          最近更新 更多