我必须查询all_objects
表last_ddl_time='01 jan 2010'
,但它拒绝日期格式......
任何机构都会给我一个确切的格式来查询?
答案 0 :(得分:2)
正如AKF所说,除非您知道修改DDL的确切时间,否则您应该使用Trunc
。您在评论中添加的查询正在查找DDL在2010年1月1日00:00:00更改的任何对象。尝试:
SELECT *
FROM all_objects
WHERE trunc(last_ddl_time) = to_date('01-01-2010','dd-mm-yyyy');
答案 1 :(得分:1)
我建议您使用de date
literal:
where trunc(last_ddl_time) = date '2010-01-01'
答案 2 :(得分:0)
您可以使用to_date
功能设置日期格式。如果输入文字字符串,Oracle将尝试使用to_date
使用默认格式'DD-MON-YY'
转换该字符串,因此您的日期将显示为“01-JAN-10”。由于Oracle将使用相同的功能,您可能希望将其放在自己的位置,并享受自定义格式可以提供的更精细的粒度。
值得注意的是,该列中存储的日期很可能具有更精确的日期,包括小时和分钟等。虽然您会受到一点性能影响,但使用{{{ 1}}如果您使用trunc(last_ddl_time)
进行测试。
在this link处有一些关于Oracle日期的好信息。
答案 3 :(得分:0)
SELECT *
FROM all_objects t
WHERE trunc(t.last_ddl_time, 'DD') = to_date('2010-JAN-01', 'YYYY-MON-DD');