| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2247 人关注过本帖
标题:判断一个时间段是否在另一个时间段里
只看楼主 加入收藏
eryiqingfan
Rank: 1
等 级:新手上路
威 望:2
帖 子:379
专家分:0
注 册:2006-8-15
收藏
 问题点数:0 回复次数:11 
判断一个时间段是否在另一个时间段里
图片附件: 游客没有浏览图片的权限,请 登录注册


如果想判断 2005 .8~2006.1是否在这个时间段里,变量:
Y1=2005
M1=8
Y2=2006
M2=1

本人愚笨,写了一大排,
zgjf1.jf_year<=Y1 .and. zgjf1.jf_z_year>=Y1 .and. zgjf1.jf_year<=Y2 .and. zgjf1.jf_z_year>=Y2 .and. zgjf1.jf_month<=M1.and. zgjf1.jf_z_month>=M1 .and.zgjf1.jf_month<=M2 .and. zgjf1.jf_z_month>=M2

有没有简便一点的写法.
搜索更多相关主题的帖子: 时间段 判断 
2006-09-08 18:08
fown
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:58
帖 子:1229
专家分:171
注 册:2005-5-26
收藏
得分:0 
BETWEEN( ) 函数

有人说VFP不行了,我想说,你连VFP十分之一的功能都不会用,你怎么知道VFP不行?本人拒绝回答学生的问题我回答问题一般情况下只提供思路不提供代码,请理解
2006-09-08 20:15
eryiqingfan
Rank: 1
等 级:新手上路
威 望:2
帖 子:379
专家分:0
注 册:2006-8-15
收藏
得分:0 

谢谢fown!~~
其实还是很长:
BETWEEN(y,zgjf1.jf_year,zgjf1.jf_z_year).and.BETWEEN(yz,zgjf1.jf_year,zgjf1.jf_z_year).and.
BETWEEN(m,zgjf1.jf_month,zgjf1.jf_z_month).and.BETWEEN(mz,zgjf1.jf_month,zgjf1.jf_z_month)
但看起来整齐多了.


学习ING... 安静的阳台,抬头那一小片天空,自由自在唱属于自己的歌. 鬼鬼£小鬼 ++UU
2006-09-09 00:49
啸凡
Rank: 8Rank: 8
等 级:贵宾
威 望:45
帖 子:1356
专家分:885
注 册:2006-2-22
收藏
得分:0 
按照您这样的做法,2005年9~12月就不在2005年8月~2006年2月之间了,因为9~12是不可能在8~2之间的,可能我没看清楚,反正总觉得您的那些代码怪怪的。您有没运行一下试试能不能得出应有的结果?
试试以下代码看看的(只是想法,没验证过)
SET DATE TO ANSI
SET CENTURY ON
lcBegingDay=CTOD(ALLTRIM(STR(Y1))+'.'+ALLTRIM(STR(M1)+'.'+'01')
lcEndDay=GOMONTH(lcBegingDay ,(Y2-Y1)*12+(M2-M1)+1)-1
lcBtDay=CTOD(ALLTRIM(STR(zgjf1.jf_year))+'.'+ALLTRIM(STR(zgjf1.jf_month))+'.15')
BETWEEN(lcBtDay,lcBegingDay,lcEndDay)

[此贴子已经被作者于2006-9-9 8:32:55编辑过]


两人行已有我师……
2006-09-09 07:58
eryiqingfan
Rank: 1
等 级:新手上路
威 望:2
帖 子:379
专家分:0
注 册:2006-8-15
收藏
得分:0 
是啊,忽略了,感谢提醒,我参考一下你的代码,我也再仔细考虑一下.

感谢!~
(看起来还挺麻烦哦)

[此贴子已经被作者于2006-9-9 9:06:01编辑过]


学习ING... 安静的阳台,抬头那一小片天空,自由自在唱属于自己的歌. 鬼鬼£小鬼 ++UU
2006-09-09 08:45
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
直接用两个日期数相减,结果为正数的话则表示被减的日期在减的日期之后。不知这样行吗?

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2006-09-09 08:47
啸凡
Rank: 8Rank: 8
等 级:贵宾
威 望:45
帖 子:1356
专家分:885
注 册:2006-2-22
收藏
得分:0 

呵呵,楼上,现在关键问题是,楼主的日期是合成的,它们在表中分开年份和月份两个字段存放,而且没有日子。这样就必须换算成一个完整的日期或数值才能进行比较啊。
还有一种思路:把年份和月份加起来形成一个数值。如2005年8月白换算成200508,2006年2月换算成200602.这样就可以直接比较了。
cLBM=IFF(M1<9,'0'+ALLTRIM(STR(M1),ALLTTRIM(STR(M1))
nlBegingday=VAL(STR(Y1)-cLBM)
cLEM=IFF(M2<9,'0'+ALLTRIM(STR(M2),ALLTTRIM(STR(M2))
nlEndday=VAL(STR(Y2)-cLEM)
BETWEEN(要比较的字段值,nlBegingday,nlEndday) &&由于您的年份和月份是分开两个字段的,必须也得把它们像以上那样连接起来。

[此贴子已经被作者于2006-9-9 17:06:50编辑过]


两人行已有我师……
2006-09-09 17:04
eryiqingfan
Rank: 1
等 级:新手上路
威 望:2
帖 子:379
专家分:0
注 册:2006-8-15
收藏
得分:0 
谢谢啸凡,还是你的思路好一些.已经可以实现了.

学习ING... 安静的阳台,抬头那一小片天空,自由自在唱属于自己的歌. 鬼鬼£小鬼 ++UU
2006-09-10 18:43
linwm
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2006-7-18
收藏
得分:0 
我觉得还是直接用日期数据好

d1=date(y1,m1,1)
d2=date(y2,m2+1,1)

if d>=d1 and d<d2
xxx
endif

2006-09-10 20:26
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
收藏
得分:0 
同意9楼观点.不过起始日期定在当月的1号,截止日期定在当月的最后一天更好

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2006-09-10 20:30
快速回复:判断一个时间段是否在另一个时间段里
数据加载中...
 
   



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

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