南雅中学2017高考人数:请帮忙看一下这段ASP代码,关于日期比较的问题!

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/29 10:13:57
Dim rs__MM_C_Date_S
MM_C_Date_S = "1"
If (Request.Form("C_Date_S") <> "") Then
MM_C_Date_S = Month(Date)/Request.Form("C_Date_S")/Year(Date)
End If

Dim MM_C_Date_O
MM_C_Date_O = "1"
If (Request.Form("C_Date_O") <> "") Then
MM_C_Date_O = Month(Date)/Request.Form("C_Date_O")/Year(Date)
End If

SQL查询如下

SELECT * FROM Now_Mon WHERE C_Date >= '" + Replace(MM_C_Date_S, "'", "''") + "' And C_Date <= '" + Replace(MM_C_Date_O, "'", "''") + "'"

C_Date是日期类型 格式为 MM/DD/YYYY

功能要求是表单传递一个日期段,然后从数据中找出符合这个日期段的所有数据

我不知道哪里写错了,也试了另外的几种写法,可总是提示我说“表达式中的数据类型不匹配”
SELECT * FROM Now_Mon WHERE C_Date >= #" + Replace(MM_C_Date_S, "'", "''") + "# And C_Date <= #" + Replace(MM_C_Date_O, "'", "''") + "#"

这种方法我也试过了,语法错误
本来我也想加上#应该在SQL查询里就是转换成日期类型了,可是不行,不知道还有没有别的办法?
我想这里的问题应该是传递过来的查询条件被当成了文件类型,所以才会出现类型不匹配的错误,怎样写才是正确的传递日期类型数据呢?

MM_C_Date_S 和 MM_C_Date_O 这两个从表单里取的值是这样的
<option value="<%=Month(Date)%>/01/<%=Year(Date)%>">01</option>
也就是这里的表单值,月和年都是取当前系统日期,只有“日”这一个地方是邮用户来选择的,请大家帮忙看一下,是不是这里写错了。

用between或者用datediff
between用法
sql = "SELECT * FROM Now_Mon WHERE C_Date between #" & MM_C_Date_S & "' And #" & MM_C_Date_O & "#"
或者datediff用法
sql = "SELECT * FROM Now_Mon WHERE datediff('s',C_Date," & MM_C_Date_S & ")>0 And datediff('s'," & MM_C_Date_O & ",C_Date)"

SELECT * FROM Now_Mon WHERE C_Date >= '" + Replace(MM_C_Date_S, "'", "''") + "' And C_Date <= '" + Replace(MM_C_Date_O, "'", "''") + "'"
把查询语句用下面这句试试;
SELECT * FROM Now_Mon WHERE C_Date >= #" + Replace(MM_C_Date_S, "'", "''") + "# And C_Date <= #" + Replace(MM_C_Date_O, "'", "''") + "#"