- 论坛徽章:
- 0
|
如何指定dateformat
参考下面的存储过程:
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 || '/' || mm || '/' || dd || ' ' || hh || ':' || mi || ':' || ss
when 'nnnnnn'
then nnnnnn
else
'date format ' || coalesce(fmt,' ') || ' not recognized.'
end
from tmp
最开始,使用了一个公共表表达式来将一个时间戳记(第一个输入参数)分别剥离为单独的时间元素。然后检查提供的定制格式(第二个输入参数)并将前面剥离出的元素按照该定制格式的要求加以组合。
这个函数非常灵活。如果要增加另外一种模式,可以很容易地再添加一个 WHEN 子句来处理。在使用过程中,如果用户提供的格式不符合任何在 WHEN 子句中定义的任何一种模式时,函数会返回一个错误信息。
使用方法示例:
values ts_fmt(current timestamp,'yyyymmdd')
返回:20051011
values ts_fmt(current timestamp,'asa')
返回:date format asa not recognized. |
|