免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 9739 | 回复: 2
打印 上一主题 下一主题

急! 关于to_char函数的请教? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-07-07 13:00 |只看该作者 |倒序浏览
在Oracel 中的To_char 函数在DB2中对应的是什么?
例:select To_char(value,'yyyy/mm') as value1 from table1 在DB2中怎样修改?
谢谢!

论坛徽章:
0
2 [报告]
发表于 2005-07-08 15:33 |只看该作者

急! 关于to_char函数的请教?

select char(value) as value1 from table1 可以把value的日期变为字符串格式,但是不能变成类似“yyyy/mm”的格式。

如果想变成类似“yyyy/mm”的格式,需要自己写存储过程:
create function ts_fmt(TS timestamp, fmt varchar(20)) returns varchar(50) return
with tmp (dd,mm,yyyy,hh,mi,ss,nnnnnn) as (
        select substr( digits (day(TS)),9),
        substr( digits (month(TS)),9) ,
        rtrim(char(year(TS))) ,
        substr( digits (hour(TS)),9),
        substr( digits (minute(TS)),9),
        substr( digits (second(TS)),9),
        rtrim(char(microsecond(TS)))
        from sysibm.sysdummy1 )
select case fmt
when 'yyyymmdd'
        then yyyy || mm || dd
when 'mm/dd/yyyy'
        then mm || '/' || dd || '/' || yyyy
when 'yyyy/dd/mm hh:mi:ss'
         then yyyy || '/' || dd || '/' || mm || ' ' || hh || ':' || mi || ':' || ss
when 'yyyy/mm'
         then yyyy || '/' || mm
when 'nnnnnn'
        then nnnnnn
else
        'date format ' || coalesce(fmt,' ') || ' not recognized.'
end
from tmp

最开始,使用了一个公共表表达式来将一个时间戳记(第一个输入参数)分别剥离为单独的时间元素。然后检查提供的定制格式(第二个输入参数)并将前面剥离出的元素按照该定制格式的要求加以组合。
这个函数非常灵活。如果要增加另外一种模式,可以很容易地再添加一个 WHEN 子句来处理。在使用过程中,如果用户提供的格式不符合任何在 WHEN 子句中定义的任何一种模式时,函数会返回一个错误信息。

使用方法示例:
select ts_fmt(value,'yyyy/mm') as value1 from table1   
返回:2005/07

论坛徽章:
0
3 [报告]
发表于 2005-07-08 15:37 |只看该作者

急! 关于to_char函数的请教?

多谢多谢了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP