没有时间戳的记录

时间:2017-06-20 12:53:40

标签: sql oracle

我有一个包含数据类型日期列的表。

从2005年开始,数据以“MM / DD / YYYY HH12:MI:SS AM”格式填入API,并且从多年后的某个地方变为“MM / DD / YYYY”,不知何时发生。< / p>

现在我需要找出这种情况何时开始发生。如何在查询中使用和不使用时间戳分隔记录?

P.S:表格庞大,有数百万条记录,因此获取所有行和排序都无济于事。

2 个答案:

答案 0 :(得分:4)

这将找到不在午夜的最新日期:

SELECT MAX(
         CASE
           WHEN your_column > TRUNC( your_column )
           THEN your_column
         END
       )
FROM   your_table

答案 1 :(得分:3)

trunc(date)函数删除日期的时间部分。对于具有时间截断(日期)&lt;&gt;日期的记录以及没有时间截断(日期)=日期的记录。

select * 
from your_table
where trunc(date_column)=date_column;

编辑:

消除任何误解

to_date('21-07-2017','DD-MM-YYYY') 

等于

to_date('21-07-2017 00:00:00','DD-MM-YYYY HH24:MI:SS')

等于

trunc(to_date('21-07-2017 09:20:43','DD-MM-YYYY HH24:MI:SS'))

在我看来,没有时间的日期意味着没有指定时间的日期

to_date('21-07-2017','DD-MM-YYYY')