 |
这位初学者问题提的有点怪,字段既然为日期型,怎又为数值型?
下面我的回答不知是否理解他的意思。
set cent on
set mark to '-'
set date to ymd
x1=20030121
x2=20030211
y1=subs(allt(str(x1)),1,4)+'-'+subs(allt(str(x1)),5,2)+'-'+subs(allt(str(x1)),7,2) && x1转为字符型日期
y2=subs(allt(str(x2)),1,4)+'-'+subs(allt(str(x2)),5,2)+'-'+subs(allt(str(x2)),7,2) && x2转为字符型日期
?ctod(y2)-ctod(y1)
Micheal的意见:
set cent on
set date to ymd
x1=20030111
x2=20030222
*!* 转换为字符型
x1=str(x1,8)
x2=str(x2,8)
*!* 用Day()函数转换为日期型
x1=day(val(left(x1,4)),val(subs(x1,5,2)),val(subs(x1,7,2)))
x2=day(val(left(x2,4)),val(subs(x2,5,2)),val(subs(x2,7,2)))
?x2-x1
建议在设置表结构时,不要把日期存为数值型,存入时转换时麻烦,计算时转换也麻烦,最好是日期型(方便计算,可用DTOS()函数转换为字符型)。
dragon的意见:
前两天正好要解决这个问题,你去查一下这个函数就知道了:SYS(11,' ' ),这后一个参数就是日期。然后两次的结果相减就有了!
此问题由hzh回答。
附加关键字:编程, 源程序, programming, source code, FoxPro/Visual FoxPro, Foxbase, dBase, xbase, FoxPro, VFP, Visual FoxPro, 其他方面, 。
|