主题:如何把dbf里的数值型(或者字符型)转换成日期型 (老数据不要丢失)
benyue
[专家分:0] 发布于 2008-10-10 01:29:00
如何把dbf里的数值型(或者字符型)转换成日期型 (老数据不要丢失)
回复列表 (共6个回复)
沙发
菜鸭 [专家分:5120] 发布于 2008-10-10 07:31:00
ctod(str(数值))
ctod(字符)
板凳
benyue [专家分:0] 发布于 2008-10-10 08:03:00
上面的不行 比如 原自断是 入党时间 (数值型) 里面的数据是199410 这样的形式 要转换成 日期型的 原来数据不要丢失 我用了
SCAN
?CTOD(SUBSTR(入党时间,1,4)+'-'+SUBSTR(入党时间,5,2)+'-'+'02')
ENDSCA
?TYPE(入党时间)
但是结果不行 没有变换
如果用
ALTER TABLE book ALTER COLUMN 入党时间 C(10)
REPLACE ALL 入党时间 WITH STUFF(入党时间,5,0,".")-".01" in book
ALTER TABLE book ALTER COLUMN 入党时间 D
BROWSE LAST
结果是原来的数据丢失了 虽然转换成日期型的了 但是原来的数据 没有了
我现在该怎么办?请求各位高手?
3 楼
martine [专家分:4950] 发布于 2008-10-10 10:40:00
DBF加一个字段就可以随便折腾了
4 楼
qjbzjp [专家分:8830] 发布于 2008-10-10 11:26:00
同意三楼,或copy to 一个临时文件
转换后,再将临时文件中相应字段中的数据置换回来。
5 楼
benyue [专家分:0] 发布于 2008-10-10 13:34:00
我是这样做的
看具体实例原来数据是199410型的数字型
set date ymd
ALTER TABLE book add COLUMN 入党时间1 d
UPDATE book SET 入党时间1=CTOD(LEFT(transform(入党时间),4)+"/"+RIGHT(TRIM(TRANSFORM(入党时间)),2)+"/01") where 入党时间<>0
alter table book drop column 入党时间
ALTER TABLE book rename 入党时间1 to 入党时间
这样就ok了
还有就是字符型的转换日期型的是
set date ymd
ALTER TABLE book add COLUMN 入党时间1 d
UPDATE book SET 入党时间1=CTOD(LEFT((出生年月),4)+"/"+RIGHT(LEFT((出生年月),6),2)+"/01")
alter table book drop column 出生年月
ALTER TABLE book rename 入党时间1 to 出生年月
上面 都已搞定 还有一个问题是
简单说在表里 字符型1989-9-1转换成日期性1989/09/01?这些都是老数据 原来输入不规范 现在要导新程序里 所以现在必须转换
麻烦各位了!
6 楼
qjbzjp [专家分:8830] 发布于 2008-10-10 16:20:00
SET DATE TO ymd
我来回复