asp日期运算【高手】进来接分!!

cnpznet 2005-12-08 12:52:39
本贴问题:根据会员的注册时间计算出本周的新注册会员???本人比较菜,下面是我的做法,请高手指正,谢谢!!!

表结构如下:(已固定,不能变)

字段:adddate 类型:日期/时间 默认值:now()


第一步:首先根据当前星期几计算出当前日期,如下列代码:
currweek=Weekday(date())
currdate=date()
select case currweek
case 1
newdate=DateAdd("d",0,currdate)
case 2
newdate=DateAdd("d",6,currdate)
case 3
newdate=DateAdd("d",5,currdate)
case 4
newdate=DateAdd("d",4,currdate)
case 5
newdate=DateAdd("d",3,currdate)
case 6
newdate=DateAdd("d",2,currdate)
case 7
newdate=DateAdd("d",1,currdate)
End select

第二步:根据会员的注册时间计算出本周的新注册会员!!!

rs.open "select * from 会员表 where (year(adddate)&'-'&month(adddate)&'-'&day(adddate)>='"&newdate-6&"' and year(adddate)&'-'&month(adddate)&'-'&day(adddate)<='"&newdate&"') order by id",conn,1,1


问题:这是字符型的比较法,与实际计算的时候有点出入,请高手教教我,日期型的怎么比较!!!请贴出代码,不胜感激!!!





...全文
213 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnpznet 2005-12-09
  • 打赏
  • 举报
回复
????
卡哇伊qingqing 2005-12-09
  • 打赏
  • 举报
回复
楼主说的是asp+access,不是SQLSERVER
KimSoft 2005-12-09
  • 打赏
  • 举报
回复
现成的代码如下,只支持SQLSERVER
'
'得到某天所在周的访问量
'
Function GetWeekVisitCount(someDate)
SomeDat = CDate(someDate)
Dim sql
sql = "Select Count(ID) From Counter where CONVERT(char(10), VisitTime,126)<= convert(char(10),dateadd(d,(7-datepart(dw,'" & somedate & "')),'" & somedate & "'),126)" &_
" and CONVERT(char(10), VisitTime,126)>=convert(char(10),dateAdd(d,1-datepart(dw,'" & somedate & "'),'" & somedate & "'),126)"

'Response.Write sql
'Response.End
GetWeekVisitCount = objConnSQL.Execute(sql).fields(0).Value
End Function
cnpznet 2005-12-09
  • 打赏
  • 举报
回复
datediff(fromdate,todate,d)这样可能是最好的办法,
但现在的问题是:字段:adddate 类型:日期/时间 默认值:now()
假设星期一为w1
datediff('d',adddate,&"w1"&)<=0这样出现的结果是“类型不匹配”,请问怎么《解决日期/时间》类型和《日期型》区配的问题!!!!!
cnpznet 2005-12-08
  • 打赏
  • 举报
回复
感谢楼上答复,但还是一样的结果。。问题是:adddate 类型:日期/时间 默认值:now()

where dfield(日期/时间类型)>=w1(日期型) and dfield<=w7

根本没法比较啊。。。出不来想要的结果!!!
lonaerd 2005-12-08
  • 打赏
  • 举报
回复
怎么这样做呢,你这样好象得不到结果啊!

根据当前星期直接算出本周星期一和星期日的日期,然后查询语句里where datefield>=星期一日期 and <=星期日日期 即可!

*************************************************8
Function GetOrderDate(Dstr,flag) 'FLAG标记计算本周末或下周一的日期
dim WeekStr
dim Endstr
WeekStr=WeekDay(dstr-1)

EndStr=dateadd("d",(flag-Weekstr),dSTR)

GetOrderDate=EndStr

end function

************************
周一日期: w1=GetOrderDate(date,1)
周日日期 w7=dateadd("d",6,w1)

select * from tb1 where dfield>=w1 and dfield<=w7


zhanghongwen 2005-12-08
  • 打赏
  • 举报
回复
更正一下:where datediff(fromdate,todate,7)>=0
zhanghongwen 2005-12-08
  • 打赏
  • 举报
回复
where datediff(fromdate,todate,7)>=0
yongz_0 2005-12-08
  • 打赏
  • 举报
回复
DateDiff (I , D1 , D2[,FW[,FY]])
计算两个日期之间的期间。
I :设定两个日期之间的期间计算之单位。譬如 >I="m" 表示计算的单位为月。 >I 的设定值如:
yyyy > Year 年
q Quarter 季
m Month 月
d Day 日
w Weekday 星期
h Hour 时
m Minute 分
s Second 秒
D1 ,D2:计算期间的两个日期表达式,若 >date1 较早,则两个日期之间的期间结果为正值;若 >date2 较早, 则结果为负值。
FW :设定每周第一天为星期几, 若未设定表示为星期天。 >FW 的设定值如下:
0 使用 >API 的设定值。
1 星期天
2 星期一
3 星期二
4 星期三
5 星期四
6 星期五
7 星期六
FY :设定一年的第一周, 若未设定则表示一月一日那一周为一年的第一周。 >FY 的设定值如下:
0 使用 >API 的设定值。
1 一月一日那一周为一年的第一周
2 至少包括四天的第一周为一年的第一周
3 包括七天的第一周为一年的第一周
例子: DateDiff ("d","25-Mar-99 ","30-Jun-99 ")
结果: 97
说明:显示两个日期之间的期间为 97 天。
jspadmin 2005-12-08
  • 打赏
  • 举报
回复
where datediff(fromdate,todate,d)>=0 and datediff(todate2,fromdate,d)<=0 todate和todate2分别设定起始和末了日期

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧