oracle 字符串类型的8位数字想转换成日期格式

风吹那年都夏天 2016-08-31 11:48:44
我想把表中,身份证号码的出生年月日取出来,转成日期类型的数据,更新到这张表的另一个字段‘生日’中去。
sql语句如下:
update tb t set t.birthday_date=to_date(substr(t.id_card,7,8),'YYYY/MM/DD) where
t.birthday_date is null and t.id_card='452623194902290918';
为何执行的时候就报错: “文字与格式字符串不匹配”?
是因为,to_date在使用时,括号里的第一个参数必须是写死的吗?
...全文
4005 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ghx287524027 2016-08-31
  • 打赏
  • 举报
回复
引用 6 楼 qq_35412013 的回复:
我知道怎么错了。 比如说我截出来的字符串是 ‘19920606’ 这是八位 但是我指定的日期格式是 ‘ yyyy/mm/dd ’ 这是十位。
所以就报错了。 怎么能在我截出来的字符串里加上两个 正斜杠呢?

你把格式改成 ‘yyyymmdd’ 就可以了,这个斜杠只是一个日期的显示格式问题,如下:
  • 打赏
  • 举报
回复
我知道怎么错了。 比如说我截出来的字符串是 ‘19920606’ 这是八位 但是我指定的日期格式是 ‘ yyyy/mm/dd ’ 这是十位。 所以就报错了。 怎么能在我截出来的字符串里加上两个 正斜杠呢?
ghx287524027 2016-08-31
  • 打赏
  • 举报
回复
你确定1949年2月份有29天?是这得问题,你可以改个小于29的日子试试
  • 打赏
  • 举报
回复
引用 2 楼 js14982 的回复:
YYYYMMDD 应该 'YYYYMMDD' ,你的原语句也只是一个单引号




这是 生日字段里的数据 年月日都是用 正斜杠 隔开的。 我更新的时候不用指定日期格式吗? 比如yyyy-mm-dd yyyy/mm/dd
  • 打赏
  • 举报
回复
引用 1 楼 js14982 的回复:
to_date(substr(t.id_card,7,8),'YYYY/MM/DD) 改成 to_date(substr(t.id_card,7,8),'YYYYMMDD)
报错呢: 指定月份的日期无效
js14982 2016-08-31
  • 打赏
  • 举报
回复
YYYYMMDD 应该 'YYYYMMDD' ,你的原语句也只是一个单引号
js14982 2016-08-31
  • 打赏
  • 举报
回复
to_date(substr(t.id_card,7,8),'YYYY/MM/DD) 改成 to_date(substr(t.id_card,7,8),'YYYYMMDD)
  • 打赏
  • 举报
回复
引用 7 楼 ghx287524027 的回复:
[quote=引用 6 楼 qq_35412013 的回复:] 我知道怎么错了。 比如说我截出来的字符串是 ‘19920606’ 这是八位 但是我指定的日期格式是 ‘ yyyy/mm/dd ’ 这是十位。 所以就报错了。 怎么能在我截出来的字符串里加上两个 正斜杠呢?
你把格式改成 ‘yyyymmdd’ 就可以了,这个斜杠只是一个日期的显示格式问题,如下: [/quote] 恩。你说的对,是我这个身份证号码不正确。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧