【问题标题】:Can't compare 2 dates in oracle correctly无法正确比较 oracle 中的 2 个日期
【发布时间】:2016-12-07 10:53:46
【问题描述】:

我有这个 sql 查询,它在 2016 年 12 月 7 日 之前检索记录,问题是,oracle 返回 2016 年 12 月 6 日及以下的记录。请问这是正确的行为吗?

SELECT DISTINCT ACCOUNT_NO
FROM TBL_CLIENT_FINANCIAL_ACTIVITY cfa
WHERE CAST(tran_date as DATE) <= TO_DATE('12/07/2016');

【问题讨论】:

  • SELECT ACCOUNT_NO, tran_date FROM ...。结果正确吗?
  • 是的。它确实反映了正确的结果。问题在于日期比较。
  • CAST(tran_date as DATE)TO_DATE('12/07/2016') 从 WHERE 移动到选择列表。会发生什么?
  • 澄清一下:您是说排除了确切的日期 12/07/2016,就好像您写的是 &lt; 而不是 &lt;=
  • 输出相同的结果。

标签: sql oracle date comparison


【解决方案1】:

我假设您使用的是 MM/DD/YYYY?在你的 to_date() 中声明它。

to_date('12/07/2016','MM/DD/YYYY')

另外,让我们截断该新日期以匹配您声明的日期,否则剩余的小时数分钟秒数会晚于您的 to_date 值。

trunc(CAST(tran_date as DATE)) <= to_date('12/07/2016','MM/DD/YYYY')

【讨论】:

  • trunc() 函数有效。我想将时间戳转换为日期是不够的。
猜你喜欢
  • 1970-01-01
  • 2019-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多