oracle - 根据日期列选择数据

标签 oracle

我尝试使用以下查询从表中选择一些数据:

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 的文档。任何人都可以解释为什么会发生这种情况吗?

更新

根据宝贵的评论,我认为某些时间值也可能与日期相关联。但我无法查看/编辑该时间。如何确保存在关联的时间值。

enter image description here

最佳答案

TO_DATETRUNC 是不同的。请参阅下面的示例。

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 进行比较,其中也有时间值。而在您的第二个查询中,您从表数据和查询中截断了时间部分,这就是它匹配的原因。

关于oracle - 根据日期列选择数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23910501/

相关文章:

oracle - 脚本中包含一个远程表的 DRIVING_SITE Oracle 提示

oracle - PL/SQL 过程 - 作为输入的记录列表

java - 为什么我的数据仅在读取时刷新到数据库?

ruby-on-rails - Rails + Oracle + oracle_enchanced 适配器 : db:create asks for SYSTEM password?

oracle - 顶点 : Download BLOB from temporary table

regex - Oracle REGEXP_LIKE和单词边界

sql - 查询在使用连接时抛出 ORA-00904 Invalid Identifier

c# - 将数据从 Oracle Server 复制到 SQL Server

c# - 插入大文件时"ORA-03135: connection lost contact"

java - 我应该部署为 ADF Library Jar 来调用函数吗?