Oracle SQL查询日期格式

3phpmpom  于 2023-05-28  发布在  Oracle
关注(0)|答案(4)|浏览(141)

我总是搞不清ORACLE SQL查询中的日期格式,花了几分钟的时间一起去谷歌,有人能告诉我当我们在数据库表中有不同格式的日期时,最简单的处理方法吗?
例如,i有一个日期列ES_DATE,保存数据为27-APR-12 11.52.48.294030000 AM,数据类型为TIMESTAMP(6)WITH LOCAL TIME ZONE。

我写了一个简单的选择查询来获取那天的数据,但它什么也没有返回。有人能解释一下吗

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

select * from table where es_date = '27-APR-12';
nue99wik

nue99wik1#

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文字:date '2012-04-27'
尽管您正确地使用了to_date(),并且没有依赖隐式数据类型转换,但是由于'dd-MON-yy',您对to_date()的使用仍然存在一个微妙的缺陷。
使用不同的语言设置,这可能很容易失败,例如:TO_DATE('27-MAY-12','dd-MON-yy')(当NLS_LANG设置为德语时)。避免在不同语言中可能不同的格式中的任何内容。使用四位数的年份和数字,例如'dd-mm-yyyy''yyyy-mm-dd'

7uhlpewt

7uhlpewt2#

如果您使用相同日期格式,并选择了在Oracle中查询日期位置:

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

Oracle提供的To_DATE

7vhp5slm

7vhp5slm3#

你可以使用这个命令来获取你的数据。这会提取你的数据

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

mrphzbgm4#

在我的例子中,当我将其用作'01-NOV-2022'时,发现一个非数字字符的字符错误。所以我就这样做了。

select * from table
where TO_DATE(es_date) >= '01-11-22'

相关问题