回 帖 发 新 帖 刷新版面

主题:如何把dbf里的数值型(或者字符型)转换成日期型 (老数据不要丢失)

如何把dbf里的数值型(或者字符型)转换成日期型 (老数据不要丢失)

回复列表 (共6个回复)

沙发

ctod(str(数值))
ctod(字符)

板凳

上面的不行  比如 原自断是 入党时间 (数值型) 里面的数据是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 楼

DBF加一个字段就可以随便折腾了

4 楼

同意三楼,或copy to 一个临时文件
转换后,再将临时文件中相应字段中的数据置换回来。

5 楼

我是这样做的
看具体实例原来数据是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 楼

SET DATE TO ymd

我来回复

您尚未登录,请登录后再回复。点此登录或注册