DB2日期格式为"2014-04-23 13:10:10"转换为字符串"20140423",请大侠指教

DB2日期格式为"2014-04-23 13:10:10"转换为字符串"20140423",请大侠指教,第1张

DB2  应该有个  TO_CHAR  的函数

用来把 日期 转换为 字符串

db2 => SELECT

db2 (cont) =>   TO_CHAR(CURRENT_TIMESTAMP, 'YYYY-MM-DD HH24:MI:SS')

db2 (cont) => FROM SYSIBMSYSDUMMY1;

1

---------------------------------------------------------------------

2011-10-06 20:30:00

  1 条记录已选择。

你可以尝试修改上面的例子, 把

TO_CHAR(CURRENT_TIMESTAMP, 'YYYY-MM-DD HH24:MI:SS')

修改为

TO_CHAR(CURRENT_TIMESTAMP, 'YYYYMMDD')

看看格式是否满足预期。

我觉得就得写个函数来做这件事情,因为DB2好像没有这种统计特定字符出现字数的函数,自己写个吧,基本算法是这样:

1用locate函数找到逗号

2substr函数截取逗号之后的字符串

3调到第一步执行,直到substr取到的字符串为空

如果是字符串转换成日期可以采用下面的格式:

i_cWorkDate=20150131

SET v_sCurYear=substr(i_cWorkDate,1,4);

SET v_sCurMonth=substr(i_cWorkDate,5,2);

SET v_sCurDay=substr(i_cWorkDate,7,2);

SET v_sWorkDate10=v_sCurYear||'-'||v_sCurMonth||'-'||v_sCurDay

这样v_sWorkDate10就是你要的10位日期了

char函数

char(current date,ISO)——转换成yyyy-mm-dd

char(current date,USA)——转换成mm/dd/yyyy

char(current date,EUR)——转换成ddmmyyyy

上面语句亲试了一下 没有问题啊。

注意一下符号是不是在英文状态下。

你这样转一次转过来应该会有问题的,

英文和空字符串怎么能转得了,

建议你将英文和空字符先转码,

转换成相应的数字,然后再转换成DECIMAL

strip跟trim类似,可以去掉2端指定的字符,

strip(string, b|l|t, char)

其中b=both,指去掉2端, l=leading,指去掉前导, t=trailing,指去掉后续

如 strip('009900', b, '0')就是去掉2端的0,结果为'99'

char可以没有,没有时指删除空白字符,跟trim/ltrim/rtrim类似

用ADODB更方便。。。

加入ADODB控件,然后定义一个RECORDSET和CONNECTION通过CONNECTION连接数据库,通过RECORDSET 进行INSERT \SELECT\UPDATE\DELETE

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/12188712.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存