日期格式的Oracle SQL查询

日期格式的Oracle SQL查询,sql,database,oracle,oracle11g,Sql,Database,Oracle,Oracle11g,我总是对ORACLE SQL查询中的日期格式感到困惑,并花了几分钟的时间与google交流。有人能告诉我,当数据库表中的日期格式不同时,最简单的解决方法是什么吗 例如,我有一个日期列作为ES_date,将数据保存为2012年4月27日11.52.48.294030000 AM,数据类型为TIMESTAMP(6),带有本地时区 我编写了一个简单的select查询来获取特定日期的数据,但它什么也不返回。有人能给我解释一下吗 select * from table where es_date=TO_

我总是对ORACLE SQL查询中的日期格式感到困惑,并花了几分钟的时间与google交流。有人能告诉我,当数据库表中的日期格式不同时,最简单的解决方法是什么吗

例如,我有一个日期列作为ES_date,将数据保存为2012年4月27日11.52.48.294030000 AM,数据类型为TIMESTAMP(6),带有本地时区

我编写了一个简单的select查询来获取特定日期的数据,但它什么也不返回。有人能给我解释一下吗

select * from table
where es_date=TO_DATE('27-APR-12','dd-MON-yy')

to_date()
返回00:00:00的日期,因此您需要“删除”与之比较的日期的分钟数:

select * 
from table
where trunc(es_date) = TO_DATE('27-APR-12','dd-MON-yy')
如果您经常这样做,您可能希望在
trunc(es_date)
上创建索引

如果将默认日期格式更改为任何不同的格式,文字
'27-APR-12'
很容易失败。因此,请确保始终使用带有适当格式掩码的
to_date()
(或ANSI文字:
日期“2012-04-27”

尽管您正确地使用了
to_date()
,并且不依赖隐式数据类型转换,但由于格式为
'dd-MON-yy'
,您使用to_date()仍然存在一个微妙的陷阱


如果使用不同的语言设置,则当NLS_LANG设置为德语时,这可能很容易失败,例如到日期('2012年5月27日','dd-MON-yy')。避免使用不同语言的格式。如果您使用的是相同的日期格式,并且在oracle中选择了查询日期的位置,则仅使用四位数年份和数字,例如
'dd-mm-yyyy'
'yyyy-mm-dd'

   select count(id) from Table_name where TO_DATE(Column_date)='07-OCT-2015';

到oracle提供的日期为止,您可以通过获取数据来使用此命令。这将提取您的数据

select * from employees where to_char(es_date,'dd/mon/yyyy')='17/jun/2003';


@user2246725:那么你没有告诉我们一切。请创建一个简单的例子来说明您的问题。我这里没有得到确切日期的数据,它是:-
其中B.Timelog=to_date('14-Apr-17','DD-MM-YY')
select * from employees where to_char(es_date,'dd/mon/yyyy')='17/jun/2003';