【问题标题】:ORACLE - Query to obtain records that are not in a particular date formatORACLE - 查询以获取非特定日期格式的记录
【发布时间】:2018-07-03 10:38:19
【问题描述】:

我有一个包含值的表:

-----------------------
ID  Date
-----------------------
1   2015-06-26
2   1974-05-29 00:00:00
3   2012-01-30 00:00:00
4   2011-12-03 00:00:00
5   1994-06-12
6   2016-04-01
-----------------------

我需要获取那些格式为1974-05-29 00:00:00的ID。

也就是说,我的输出应该是:

-----------------------
ID  Date
-----------------------
1   2015-06-26
5   1994-06-12
6   2016-04-01
-----------------------

请帮忙。

更新日期列的数据类型:VARCHAR2(128 CHAR)

【问题讨论】:

  • 日期列的数据类型?
  • 请找到更新Gaj。
  • ?最简单的解决方案?:SELECT * FROM table WHERE LENGTH(date)
  • @Chriz 我是多么愚蠢!我正在尝试如何使用 Regex !这太好了。
  • @Mike 有时我们只需要有人交谈,所有问题都会自行解决:D

标签: oracle oracle11g


【解决方案1】:

试试这个

Select * from my_table where instr(date, '00:00:00') <= 0

or 

Select * from my_table where length(date) = 10

注意:我不确定您为什么要以字符串格式维护日期。最好尝试转换为日期格式(如果可能)

【讨论】:

  • 感谢您的努力,Gaj
【解决方案2】:

你只需要检查格式,就可以使用:

select *
from yourTable
where not regexp_like("Date", '\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}')

请注意,这不会检查内容,所以像'2011-12-03 99:99:99' 这样的字符串会被认为是正确的。

【讨论】:

  • 感谢您的努力,Aleksej
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多