with sample_table (EMP,DATE_STARTED) as (
select 'JOE', '11/08/06' from dual
union all
select 'BOB', '11/08/14' from dual
union all
select 'MAY', '12/08/99' from dual
)
select max(DATE_STARTED)
from sample_table
字符串 输出
12/08/99
型 我添加to_date并再次显示日期。
with sample_table (EMP,DATE_STARTED) as (
select 'JOE',to_date('11/08/06','dd-mm-yy')from dual
union all
select 'BOB', to_date('11/08/14','dd-mm-yy') from dual
union all
select 'MAY', to_date('12/08/99','dd-mm-yy') from dual
)
select DATE_STARTED-- max(DATE_STARTED)
from sample_table
with sample_table (EMP,DATE_STARTED) as (
select 'JOE',to_date('11/08/2006','dd-mm-yy')from dual
union all
select 'BOB', to_date('11/08/2014','dd-mm-yy') from dual
union all
select 'MAY', to_date('12/08/1999','dd-mm-yy') from dual
)
select max(DATE_STARTED)
from sample_table
2条答案
按热度按时间vwoqyblh1#
只是为了让你明白为什么你得到31/12/99作为最新的日期,请参阅演示。
您的原始查询:
字符串
输出
型
我添加
to_date
并再次显示日期。型
输出量:
型
现在从上面的查询的输出中,你可以看到Oracle返回的结果是非常正确的。上面结果集的最大日期是
12-08-99
。所以从上面的推断是,当你不指定年份为yyyy
时,Oracle会进行隐式转换,并根据其系统参数设置yy值。要解决这个问题,你需要像下面这样的东西。
型
输出量:
型
w7t8yxp52#
解决了,谢谢大家。
解决方法:
1.在SQL Developer中,转到Tools\Preferences\Database\NLS Parameters\Date
1.将DD/MON/RR hh 24:mi:ss更新为DD/MON/RRRR hh 24:mi:ss
它提供了预期的结果!