客户化DB2日期是我们经常遇到的问题,如果您的客户希望日期格式为YYYYMMDD怎么办呢?最好的方法时写一个客户化的格式化函数:
下面时就是客户化DB2日期函数的例子:
- 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
这个公式乍看起来比较复杂,细看一下,您会发现它还是很简单易用的。首先,使用公共表表达式(Common Table Expression)将时间格式中每一个部分提取出来,然后根据用户提供的日期格式重新组装输出。这个函数很灵活,用户可以简单地添加WHEN子句来加上期望的日期格式。使用函数时,如果输入的日期格式没有,函数还可以输出出错信息。