【问题标题】:Select latest 13 months data选择最近 13 个月的数据
【发布时间】:2021-07-01 10:22:37
【问题描述】:

我想从 Oracle 数据库中选择最近 13 个月的数据。 DATE 显示为“16/04/2020, 00:00:00”。我尝试了以下方法,但它忽略了 where 语句并返回所有数据:

select *
from DM.DATE COMMON_DATE
where
to_date(COMMON_DATE.DATE,'dd/mm/yyyy') <= add_months(trunc(sysdate, 'MON'), -1)

谢谢

【问题讨论】:

  • 列的数据类型是什么?
  • data_type 表示它的 DATE 和数据长度 7,即使我认为它是 '16/04/2020, 00:00:00'。还有其他想法吗?

标签: sql oracle datetime


【解决方案1】:

由于逗号,您的日期数据类型看起来像一个字符串。我建议您努力修复数据!日期应使用datetimestamp 或相关类型存储。

不过,在您的情况下,您可以解析出日期。我假设你想要:

where to_date(substr(common_date.date, 1, 10), 'DD/MM/YYYY') >= add_months(trunc(sysdate, 'MON'), -13)

编辑:

如果该列已经是date,则无需转换:

where common_date.date >= add_months(trunc(sysdate, 'MON'), -13)

【讨论】:

  • 谢谢您,我试过了,但收到此错误消息“ORA-01858:在应为数字的地方发现了一个非数字字符
  • @Sa 。 . .正如我所说,不要将日期存储为字符串!您需要修复数据。或者说明如果无法识别日期该怎么办。
  • data_type 表示它的 DATE 和数据长度 7,即使我认为它是 '16/04/2020, 00:00:00'。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-19
  • 1970-01-01
  • 2016-12-28
  • 1970-01-01
  • 2012-05-05
  • 1970-01-01
相关资源
最近更新 更多