效果:
如图所示,查询的年份与月份在数据库中都是单独的字段,而且是数字类型的,现在按照下面的代码查询的结果有时候不现实,比如查询2013年1月到2014年5月的全部数据,如果数据库中没有其中某个月的数据,比如2014年3月的数据那么会什么都查不到,如果有则可以查到应该是我的select语句不对吧,希望大家积极帮忙,附上代码:
<script language="JavaScript" type="text/javascript">
......
</script>
<form action="" method=post name=form1 onSubmit="return CheckForm()">
<select name="userid" size=1>
<option value="0">全部 </option>
<%
set rs=server.createobject("adodb.recordset")
sql="select * from [user] order by id"
rs.open sql,conn,1,1
do while not rs.eof
response.write "<option " & sel & " value='"+CStr(rs("id"))+"'>"+rs("username")+"</option>"+chr(13)+chr(10)
rs.movenext
loop
rs.close
%>
</select>
开始时间:<select size="1" name="nian1" maxlength="4">
<option selected="selected" value="">请选择</option>
<script language="JavaScript" type="text/javascript">writeOption(2013,2051);</script>
</select>
年份
<select size="1" name="yue1" maxlength="2">
<option selected="selected" value="">请选择</option>
<script language="JavaScript" type="text/javascript">writeOption(1,13);</script>
</select>
月份 ——
结束时间:<select size="1" name="nian2" maxlength="4">
<option selected="selected" value="">请选择</option>
<script language="JavaScript" type="text/javascript">writeOption(2013,2051);</script>
</select>
年份
<select size="1" name="yue2" maxlength="2">
<option selected="selected" value="">请选择</option>
<script language="JavaScript" type="text/javascript">writeOption(1,13);</script>
</select>
月份
<input type="submit" name="sou" value=" 查 看 " />
</form>
<%
if Request("userid")<>"" and Request("nian1")<>"" and Request("nian2")<>"" and Request("yue1")<>"" and Request("yue2")<>"" then
if Request("userid")=0 then
userid=""
else
userid="user="&Request("userid")&" and"
end if
set rs=server.createobject("adodb.recordset")
sql="select * from [list] where "&userid&" [nianfen] between "&Request("nian1")&" and "&Request("nian2")&" and [yuefen] between "&Request("yue1")&" and "&Request("yue2")
rs.open sql,conn,1,1
......
ASP利用select查询数字类型年份与月份数据奇怪问题?!
答案:2 悬赏:80
解决时间 2021-04-22 16:19
- 提问者网友:控制庸俗
- 2021-04-22 12:25
最佳答案
- 二级知识专家网友:茫然不知崩溃
- 2021-04-22 13:57
你这种查询方式是有缺欠的,你无法实现跨年的查询,比如查2000年1月到2001年1月,那么按你现在的查询条件,月分就是between 1 and 1,那么结果并不是13个月的,而是只有2000和2001两年的1月数据.
通过SQL语句来实现这个功能的开销可能是比较大的,所以如果可能,建议还是重新设计数据库,使用日期型字段来保存日期数据比较合适.
通过SQL语句来实现这个功能的开销可能是比较大的,所以如果可能,建议还是重新设计数据库,使用日期型字段来保存日期数据比较合适.
全部回答
- 1楼网友:年轻没有失败
- 2021-04-22 14:37
ghs like '"& ghs &"'
改为
ghs like '%" & ghs & "%'
如果是access数据库,则:
ghs like '*" & ghs & "*'
或
instr(ghs,'" & ghs & "')>0
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯