我有一个包含数据类型日期列的表。
从2005年开始,数据以“MM / DD / YYYY HH12:MI:SS AM”格式填入API,并且从多年后的某个地方变为“MM / DD / YYYY”,不知何时发生。< / p>
现在我需要找出这种情况何时开始发生。如何在查询中使用和不使用时间戳分隔记录?
P.S:表格庞大,有数百万条记录,因此获取所有行和排序都无济于事。
答案 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')