| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 11337 人关注过本帖
标题:如何将字符型字段转换成日期型字段
只看楼主 加入收藏
星期吧666
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-3-10
收藏
 问题点数:0 回复次数:21 
如何将字符型字段转换成日期型字段
有一个表A 里边字符型字段a,如何把该字段转换成日期型字段,比如a为20121001 为字符型 ,转换为日期型,然后安日期排序
注:要批量修改。

[ 本帖最后由 星期吧666 于 2012-10-18 17:05 编辑 ]
搜索更多相关主题的帖子: 如何 
2012-10-18 17:02
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
这个很简单啊。看下DATE()函数

坚守VFP最后的阵地
2012-10-18 17:09
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:109
帖 子:2214
专家分:3882
注 册:2007-4-27
收藏
得分:0 
CTOD()

只求每天有一丁点儿的进步就可以了
2012-10-18 17:19
wjp456789
Rank: 5Rank: 5
来 自:四川成都
等 级:职业侠客
威 望:1
帖 子:345
专家分:330
注 册:2012-6-25
收藏
得分:0 
CTOD函数用起来不是很顺利啊。。。

我是来向高手学习的!
2012-10-18 18:11
wjp456789
Rank: 5Rank: 5
来 自:四川成都
等 级:职业侠客
威 望:1
帖 子:345
专家分:330
注 册:2012-6-25
收藏
得分:0 
你的字符型字段长度是不是8.
如果长度是8.比如20111213,则用以下办法,如果不是8位,则日期有误。需要另外规范一下数据。
首先需要建辅助列,假设表格表名为“字符转换为日期.dbf”,有rq字段且长度为8.需要设定辅助字段
在更改数据前,运行以下两条命令
SET CENTURY ON
SET DATE YMD
1.增加辅助字段rq2(字符型)
ALTER table 字符转换为日期 add rq2 C(11)  &&因为日期型为11位长度,例如:2011/12/13
2.将rq2内容替换为日期形式,如:2011/12/13
REPLACE ALL rq2 WITH SUBSTR(rq,1,4)+"/"+SUBSTR(rq,5,2)+"/"+SUBSTR(rq,7,2)
3.增加rq3字段,存放从字符转换为日期的数据
ALTER table 字符转换为日期 add rq3 D(11)
4.将rq3的内容替换为 rq2的内容
REPLACE ALL rq3 WITH CTOD(rq2)
5.设定索引
index on rq3 tag riqi
6.显示表内容
browse

效果如图:
图片附件: 游客没有浏览图片的权限,请 登录注册


PS:如果确实要改原数据。在第四步后,先更改rq1的数据类型为日期型,长度为11,再将辅助rq3的内容替换进rq1


[ 本帖最后由 wjp456789 于 2012-10-18 19:27 编辑 ]

我是来向高手学习的!
2012-10-18 19:04
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
收藏
得分:0 
a='20121001'
?date(val(left(a,4)),val(substr(a,5,2)),val(right(a,2)))

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2012-10-18 19:10
wjp456789
Rank: 5Rank: 5
来 自:四川成都
等 级:职业侠客
威 望:1
帖 子:345
专家分:330
注 册:2012-6-25
收藏
得分:0 
楼上的命令单独可行。
但是具体到数据表。应该不行
首先你没有改变字段的类型。是不能存放新数据类型的。
也就是说开始是字符型。你更改为日期型后,就不能再在字符型字段里存日期型数据了。

而且我将你的那条命令用到我的办法里。不能实现字符转换为日期存入 日期型字段里。

不知道是不是我操作有误,我是菜鸟。希望各位大侠把实现的步骤和截图放上来供大家学习一下。

我是来向高手学习的!
2012-10-18 19:20
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
收藏
得分:0 
(1)单纯的字符型出具转换为日期型数据,一种通用的做法就是6楼的处理方法。
(2)我没有讨论a的长度不是8位怎么办,也没有讨论就算a是8位的字符型数据但日期是错误的怎么办,只假定a的按照yyyymmdd这样的顺序排列的。6楼的程序更没有讨论数据表中如何修改数据类型。
(3)其实,5楼给出来了步骤,我同意。但是5楼中字符转日期的方法受系统日期格式的设置影响很大。

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2012-10-18 19:31
wjp456789
Rank: 5Rank: 5
来 自:四川成都
等 级:职业侠客
威 望:1
帖 子:345
专家分:330
注 册:2012-6-25
收藏
得分:0 
嗯 。的确是。。

我是来向高手学习的!
2012-10-18 19:47
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
收藏
得分:0 
回答1楼的问题,假定原表为“表A”,原表中有字段a但没有字段b,则程序可以是:
alter table 表A add b d
replace all b with date(val(left(a,4)),val(substr(a,5,2)),val(right(a,2)))
alter table 表A drop a
alter table 表A rename b to a
index on a tag aindex
browse

[ 本帖最后由 Tiger5392 于 2012-10-18 19:56 编辑 ]

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2012-10-18 19:55
快速回复:如何将字符型字段转换成日期型字段
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.049283 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved