【问题标题】:Compare two dates using timestamp in oracle在 oracle 中使用时间戳比较两个日期
【发布时间】:2013-09-17 09:54:03
【问题描述】:
select * 
  from  table1 rcd, 
        table2 company 
 WHERE to_timestamp(to_char(rcd.date), 'YYYY-MM-DD HH:MI:SS') >
       to_timestamp(to_char(company.date), 'YYYY-MM-DD HH:MI:SS') 

我想在 oracle 中使用时间戳 (to_timestamp) 比较我的两个日期字段,并且我使用上面的查询它没有给出正确的结果(给出不大于来自 company.date 的记录)。

知道如何在 oracle 中使用 to_timestamp 进行比较。

【问题讨论】:

  • 您似乎没有将table1 加入table2,因此您将获得笛卡尔积。这是你的意思吗?
  • > 可以比较时间戳,但您尝试从笛卡尔乘积结果集中进行选择。
  • 只使用rcd.date > company.date会发生什么?
  • @GordonLinoff 当我们直接比较它们时它会起作用。但是当我们使用时间戳时,我认为考虑到时间和日期,它也应该这样做。

标签: sql spring oracle hibernate


【解决方案1】:

to_char(<date>) 不会生成您用于to_timestamp() 的格式。最安全的方法是重复格式参数:

WHERE to_timestamp(to_char(rcd.date, 'YYYY-MM-DD HH:MI:SS'), 'YYYY-MM-DD HH:MI:SS') >
      to_timestamp(to_char(company.date, 'YYYY-MM-DD HH:MI:SS'), 'YYYY-MM-DD HH:MI:SS') 

等等。最安全的是放弃所有这些转换,然后做:

select * 
from table1 rcd join
     table2 company 
     on rcd.date > company.date;

【讨论】:

  • 谢谢,很有用
  • rcd.date > to_timestamp(to_char('2018-07-30 17:10:46', 'yyyy-MM-dd HH:MI:SS'), 'yyyy-MM-dd HH:MI:SS') 向我抛出错误ORA-01722: invalid number。知道为什么吗?
  • 即使这个也抛出同样的错误...rcd.date > to_timestamp(to_char('2018-07-30 17:10:46', 'YYYY-MM-DD HH:MI:SS'), 'YYYY-MM-DD HH:MI:SS')
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-10
  • 1970-01-01
  • 2021-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多