检索oracle数据库最近12个月数据的sql查询

uqjltbpv  于 2021-08-01  发布在  Java
关注(0)|答案(2)|浏览(775)

我正在使用oracle数据库。我有一张table叫“ TEST 其中日期/时间戳(在我的例子中存储为“char”)以以下格式存储。现在我想根据今天的日期检索过去12个月的记录。正确的方法是什么?

  1. TESTCOLUMN
  2. ------------
  3. 2019-06-28-02.01.07.327240
  4. 2020-06-28-04.49.12.480240
  5. 2020-06-28-05.05.10.681240
u0njafvf

u0njafvf1#

我想你需要用 ADD_MONTHS 功能和 BETWEEN 条款如下:

  1. SELECT * FROM YOUR_TABLE
  2. WHERE TO_TIMESTAMP(YOUR_COLUMN,'YYYY-MM-DD HH24.MI.SS.FF')
  3. BETWEEN ADD_MONTHS(SYSTIMESTAMP,-12) AND SYSTIMESTAMP;
cwxwcias

cwxwcias2#

虽然不建议将值存储在字符串中,但您的格式是可比较的。因此可以使用字符串而不是日期/时间戳来进行比较。假设你的价值观只是过去的:

  1. where testcolumn >= to_char(SYSTIMESTAMP, -12), 'YYYY-MM-DD HH24.MI.SS.FF')

这比tejash的解决方案有一个优势,因为它可以利用上的索引(或分区) testcolumn . 仅在“常量”(即系统时间戳)上移动日期操作有助于oracle优化器。

相关问题