首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >甲骨文varchar2到日期转换

甲骨文varchar2到日期转换
EN

Stack Overflow用户
提问于 2014-08-19 10:58:35
回答 3查看 132关注 0票数 0

我在oracle数据库中有一个表,其中有一个类型为varchar2的列,它存储日期。问题是它以两个字符的年份格式存储日期,如19/08/66,相当于19/08/1966。但是当我使用to_date函数转换这个日期时,它返回19/08/2066年,但期望19/08/1966。我怎样才能正确地转换它。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-08-19 17:07:12

使用to_date函数。

代码语言:javascript
复制
TO_DATE('16/06/66','DD/MM/RRRR')

产出为1966年6月16日

代码语言:javascript
复制
TO_DATE('16/06/16','DD/MM/RRRR')

产出为2016年6月16日

当您在1940年代运行此查询时,TO_DATE('16/06/16','DD/MM/RRRR')

产出为1916年6月16日

逻辑Oracle如下所示,函数接受2位数的年份,并返回4位数的年份.一个介于0-49之间的值将返回20xx年。一个介于50-99之间的值将返回19 99年。

票数 1
EN

Stack Overflow用户

发布于 2014-08-19 11:05:17

如果我还记得Oracle更正,to_date函数接受一个format_mask,如果您使用这个掩码: 0-49之间的'DD/MM/RRRR'值将返回20xx年,而值50-99将返回19xx年。所以试试这个:

代码语言:javascript
复制
to_date('19/08/66', 'DD/MM/RRRR')
票数 6
EN

Stack Overflow用户

发布于 2014-08-19 11:03:51

试试这个:

代码语言:javascript
复制
with t as(
  select '16/06/66' str from dual
)
select to_date(str, 'DD/MM/YY') after, to_date(str, 'DD/MM/RR') before
  from t

AFTER       BEFORE
----------------------
06/16/2066  06/16/1966
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25381693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档