我试图使用以下查询从表中选择一些数据:
select * from table1 where column1 = to_date('14-05-14','yy-mm-dd');
列数据类型为的位置DATE
。我观察到,除非我们将上述查询修改为,否则上述查询不会返回任何内容,
select * from table1 where trunc(column1) = to_date('14-05-14','yy-mm-dd');
即使有可用的记录。
我检查了文档TRUNC
。是否有人可以解释为什么会发生这种情况?
更新
根据宝贵的意见,我认为某些time
值也可能与DATE相关联。但我无法查看/编辑该内容time
。如何确保有time
关联的值。
两者TO_DATE
和TRUNC
都不同。请参见以下示例。
SQL> ALTER SESSION SET nls_date_format = 'dd/mm/yyyy hh24:mi:ss';
Session altered.
SQL> SELECT TO_DATE(SYSDATE) FROM DUAL;
TO_DATE(SYSDATE)
-------------------
28/05/2014 16:03:25
SQL> SELECT TRUNC(SYSDATE) FROM DUAL;
TRUNC(SYSDATE)
-------------------
28/05/2014 00:00:00
在您的第一个查询to_date('14-05-14','yy-mm-dd')
中,将与column1
表中的日期字段进行比较,该字段也具有时间值。而在第二个查询中,您正在从表数据和查询中截断时间部分,这就是为什么它匹配的原因。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句