【问题标题】:How to select records between two timestamps in oracleoracle如何选择两个时间戳之间的记录
【发布时间】:2015-01-15 17:42:02
【问题描述】:

我有一个表,其中recorded 列定义为timestamp,如下所示:

 TIMESTAMP(6) RECORDED

我想选择所有在 2 个时间戳之间“记录”的记录。为此,我编写了以下查询:

    SELECT * FROM myTable WHERE
    recorded BETWEEN 1414794711050 AND 1415399511053;

执行此操作时出现错误

ORA-00932:不一致的数据类型:需要 TIMESTAMP,得到 NUMBER 00932. 00000 - “不一致的数据类型:预期的 %s 得到了 %s”

我也试过了:

    SELECT * FROM myTable WHERE 
    recorded BETWEEN to_timestamp(1414794711) AND to_timestamp(1415399511);

这个查询是如何工作的?

【问题讨论】:

  • “1414794711050”是unix时间戳吗? (从 1970 年 1 月 1 日开始的秒数)
  • 它是从 1970 年 1 月 1 日开始的毫秒数,但取秒数是没有问题的,即除以 1000 并截断。

标签: oracle select timestamp


【解决方案1】:
SELECT * FROM myTable 
WHERE recorded BETWEEN to_date('19700101', 'YYYYMMDD') + 1414794711050/24/60/60/1000
                   and to_date('19700101', 'YYYYMMDD') + 1415399511053/24/60/60/1000;

1414794711050/24/60/60/1000 将毫秒转换为天数(一天 24 小时,一小时 60 分钟,一分钟 60 秒)

to_date('19700101', 'YYYYMMDD') + [N 天] = 新日期(N 天后)

【讨论】:

    猜你喜欢
    • 2012-02-02
    • 2022-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-18
    • 1970-01-01
    • 1970-01-01
    • 2014-04-11
    相关资源
    最近更新 更多