| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1064 人关注过本帖
标题:时间查询问题!
只看楼主 加入收藏
craft001wen
Rank: 2
等 级:论坛游民
帖 子:242
专家分:62
注 册:2006-5-4
收藏
 问题点数:0 回复次数:20 
时间查询问题!
看看下面的代码:


'取得当前月
mymonth=month(now())
if request("mymonth")<>"" then mymonth=cint(request("mymonth"))
'取得当前年
myyear=year(now())
if request("myyear")<>"" then myyear=cint(request("myyear"))


<select name="myyear" size=1>
<%
for i=2001 to 2010
%>
<option value=<%=i%><%=selected(i,myyear)%> ><%=i%>年</option>
<%
next
%>
</select>
<select name="mymonth" size=1>
<%
for i=1 to 12
%>
<option value=<%=i%><%=selected(i,mymonth)%>><%=i%>月</option>
<%
next
%>
</select>
<input type="hidden" name="lookfor" value="yes">
<input type="submit" value="查询" style="border:1px solid">
下面的是我的查询语句:
if request("lookfor")="yes" then
sql="select * from newnotice where noticedate between " & "#" & mydate & "# and #" & mydate1 & "# order by id desc"
rs.open sql,conn,1

在查询时提示,“#”边有语法错误!

[此贴子已经被作者于2006-6-20 12:02:27编辑过]

搜索更多相关主题的帖子: 时间 查询 
2006-06-20 12:01
hangxj
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2045
专家分:0
注 册:2006-4-10
收藏
得分:0 
对日期的操作很少,不知道下面的改法对不对

if request("lookfor")="yes" then
sql="select * from newnotice where noticedate between "#mydate# and "#mydate1#" order by id desc"
rs.open sql,conn,1



http://www./
2006-06-20 12:38
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 

sql="select * from newnotice where noticedate" & "#" & mydate & "# and #" & mydate1 & "# order by id desc"
应该可以分开查询利用T-SQL的日期时间函数MONTH() ,YEAR(),DAY()。
例如楼主的查询查询如下日期
2006年5月6日
sql="select * from newnotice where YEAR(noticedate)=2006 And MONTH(noticedate)=5 And DAY(noticedate)=6 order by id desc"
利用函数把时间分开查询。

2006-06-20 13:25
craft001wen
Rank: 2
等 级:论坛游民
帖 子:242
专家分:62
注 册:2006-5-4
收藏
得分:0 
先谢谢两位

二楼的写法是肯定 不行的。
试了yms123的:提示出错

Microsoft OLE DB Provider for SQL Server 错误 '80040e07'

将 varchar 值 '2006-5' 转换为数据类型为 int 的列时发生语法错误。

[此贴子已经被作者于2006-6-20 13:48:27编辑过]


2006-06-20 13:45
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 

sql="select * from newnotice where YEAR(noticedate)=2006 And MONTH(noticedate)=5 And DAY(noticedate)=6 order by id desc"
的确是错了

修改后的写法
sql="select * from newnotice where YEAR(noticedate)=YEAR('5/6/2006') And MONTH(noticedate)=MONTH('5/6/2006') And DAY(noticedate)=DAY('5/6/2006') order by id desc"
楼主试试?

2006-06-20 13:54
craft001wen
Rank: 2
等 级:论坛游民
帖 子:242
专家分:62
注 册:2006-5-4
收藏
得分:0 

因为我的时间是选择的。
yms123改写成这样了:
sql="select * from newnotice where noticedate between YEAR(noticedate)='"&year(myyear)&"'and month(noticedate)='"&month(mymonth)&"' order by id desc"

但还是提示出错:

Microsoft OLE DB Provider for SQL Server 错误 '80040e14'

'=' 附近有语法错误。

/noticelook.asp,行 100


2006-06-20 14:04
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 

mymonth=month(now())
if request("mymonth")<>"" then mymonth=cint(request("mymonth"))
'取得当前年
myyear=year(now())
这里可以再加一个
myday=day(now())
然后
Dim QUEDate
QUEDate=CStr(mymonth)&"/"&CStr(myday)&"/"&CStr(myyear)
sql="select * from newnotice where noticedate between YEAR(noticedate)=year('"&QUEDate&"')and month(noticedate)='"&month('"&QUEDate&"')&"' order by id desc"
这样呢?

2006-06-20 14:10
craft001wen
Rank: 2
等 级:论坛游民
帖 子:242
专家分:62
注 册:2006-5-4
收藏
得分:0 

sql="select * from newnotice where noticedate between '"&myyear&"' and '"&mymonth&"' order by id desc"

从字符串转换为 datetime 时发生语法错误:
我想主要是:怎么样才能把“字符串转换为 datetime ”

2006-06-20 14:12
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 
CDate()函数强制类型转换呢?
2006-06-20 14:15
hangxj
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2045
专家分:0
注 册:2006-4-10
收藏
得分:0 
你是想查询某年某月的记录是不是?
为什么用between?

http://www./
2006-06-20 14:18
快速回复:时间查询问题!
数据加载中...
 
   



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

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