taitoushan 2010-01-18 17:06
浏览 182
已采纳

DB2数据库里的这行代码在ORACLE应该是啥样的呢

[code="java"]date(substr(char(v_rq),1,8)||'01')[/code]

DB2存储过程里有这么一句,啥意思呢,改成ORACLE怎么改呢?

  • 写回答

5条回答 默认 最新

  • mginobili 2010-01-18 17:49
    关注

    之前你的sql
    [code="sql"]date(substr(char(v_rq),1,8)||'01') [/code]
    中是这样的
    比如传入的参数为 v_rq 2009年11月23日(日期型)
    char(v_rq)后为2009-11-23
    substr(char(v_rq))为2009-11-
    substr(char(v_rq)) || '01' 为2009-11-01
    date(substr(char(v_rq),1,8)||'01') 为 2009年11月1日

    我的sql
    [code="sql"]
    to_date(substr(to_char(v_rq, 'yyyy-mm-dd'),1,8) || '01', 'yyyy-mm-dd')

    [/code]
    to_char(v_rq, 'yyyy-mm-dd')把日期转化为string才能进行substr操作
    to_char(v_rq, 'yyyy-mm-dd')后为2009-11-23
    substr(to_char(v_rq, 'yyyy-mm-dd'),1,8) 为2009-11-
    substr(to_char(v_rq, 'yyyy-mm-dd'),1,8) || '01' 为2009-11-01
    b[/b]
    to_date(substr(to_char(v_rq, 'yyyy-mm-dd'),1,8) || '01', 'yyyy-mm-dd') 为 2009年11月1日

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制