设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 112|回复: 9
打印 上一主题 下一主题

从字符串转换为 datetime 时发生语法错误。

[复制链接]
跳转到指定楼层
1#
发表于 2010-1-10 06:56:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
做的一个订单查询系统,从日期查询订单,用的是ASP+SQL.
从"日期-日期"查询,就是从时间段查询.
在表单里有两个"INPUT",一个是PurBD,一个是PurBd2.
所用语句是:
StrSQL=StrSQL+"and dBillDay between '%"+Request.Form("PurBd")+"%' and '%"+Request.Form("PurBd2")+"%'"
SQL数据库中类型为DATATIME,长度为8.
查询时出错:
错误类型:
Microsoft OLE DB Provider for SQL Server (0x80040E07)
从字符串转换为 datetime 时发生语法错误。
/pur_list.asp, 第 56 行

POST Data:
PurBn=&PurBd=2007-01&PurBd2=2007-01&PurBrd=&PurUp=%B2%E9%D1%AF

用SQL查询分析器查询时,
格式是
2007-01-01 00:00:00.000     
上网查的都和我的不同.为什么呢?
2#
发表于 2010-1-10 06:56:48 | 只看该作者
假如上面的:
PurBd= FormatDateTime(Date, 1)
PurBd2= FormatDateTime(Date, 1)
改为:
Request.Form("PurBn")= FormatDateTime(Date, 1)
Request.Form("PurBd2")= FormatDateTime(Date, 1)
就会提示:
错误类型:
Microsoft VBScript 运行时错误 (0x800A01B6)
对象不支持此属性或方法: 'Request.Form'
回复 支持 反对

使用道具 举报

3#
发表于 2010-1-10 06:56:52 | 只看该作者
试了一天多,还是出现错,我已经用了FORMAT........
代码如下 :
<%
Function genSQLstr()
    Dim sId,PurBd,PurBd2
    sId=session("sId")
    PurBd= FormatDateTime(Date, 1)
    PurBd2= FormatDateTime(Date, 1)
    if Request.Form("PurBn")<>"" then
    StrSQL=StrSQL+"where sBillNo like '%"+Request.Form("PurBn")+"%'"
    else
    StrSQL=StrSQL+"where sSuppId='"& sId &"'"
    end if
    if Request.Form("PurBd")<>"" and Request.Form("PurBd2")<>"" then
    StrSQL=StrSQL+"and dBillDay between '%"+Request.Form("PurBd")+"%' and '%"+Request.Form("PurBd2")+"%'"
    end if
   
    if Request.Form("PurBrd")<>"" then
    StrSQL=StrSQL+"and dRecDate = '%"+Request.Form("PurBd")+"%'"
    end if

    ' 只获取到自己的订单
    strSQL=strSQL & " and sSuppId='" & Replace(sId,"'","''") & "'" ' 防止注入攻击
回复 支持 反对

使用道具 举报

4#
发表于 2010-1-10 06:56:56 | 只看该作者
查询时先格式化
format
回复 支持 反对

使用道具 举报

5#
发表于 2010-1-10 06:57:00 | 只看该作者
模糊查询好象不需要格式化吧,要不就不是模糊查询了
回复 支持 反对

使用道具 举报

6#
发表于 2010-1-10 06:57:04 | 只看该作者
dhdhzzw 在 2008-7-17 15:31 的发言:

顺便说一下,asp里'%"+Request.Form("PurBd")+"%'和'%"&Request.Form("PurBd")&"%'的区别在哪里?

我当然不知道啦........
我只知道他们都是变量......
相信这个你也知道啦~
哈哈
回复 支持 反对

使用道具 举报

7#
发表于 2010-1-10 06:57:08 | 只看该作者
顺便说一下,asp里'%"+Request.Form("PurBd")+"%'和'%"&Request.Form("PurBd")&"%'的区别在哪里?
回复 支持 反对

使用道具 举报

8#
发表于 2010-1-10 06:57:12 | 只看该作者
dhdhzzw 在 2008-7-17 15:31 的发言:

顺便说一下,asp里'%"+Request.Form("PurBd")+"%'和'%"&Request.Form("PurBd")&"%'的区别在哪里?

一,你给的这段代码不完整(语法上说),提问时尽量用完整的、有意义的代码。

二,在这里没有任何区别。

三,asp里,分为JScript和VBScript讨论,JScript里必须用加号。

四,


连接运算符 (&)
强制两个表达式进行字符串连接。

result = expression1 & expression2
参数
result
任意变量。
expression1
任意表达式。
expression2
任意表达式。
说明
任一 expression 不是字符串时,它将被转换为 String 子类型。如果两个表达式都为 Null,result 也为 Null。然而,如果仅有一个 expression 为 Null,则它和其他表达式连接时,按零长度字符串("") 处理。任何表达式为 Empty 时也按零长度字符串处理。



加法运算符(+)
计算两个数之和。

result = expression1 + expression2
参数
result
任意数值变量。
expression1
任意表达式。
expression2
任意表达式。
说明
虽然也可以使用 + 运算符连接两个字符串,但是您仍应使用 & 运算符进行字符串的连接以避免混淆,提供易理解的代码。
这是因为在使用 + 运算符时,有可能无法确定是做加法还是做字符串连接。

表达式的基本子类型决定了 + 运算符所做的操作,如下表所示:

如果  则
两个表达式都是数值 相加
两个表达式都是字符串 连接
一个表达式是数值,另一个表达式是字符串 相加

如果一个表达式或两个表达式都为 Null 表达式,则 result 为 Null。如果两个表达式都为Empty,则 result 为 Integer 子类型。但是如果一个表达式为 Empty,则返回另一个表达式作为 result。
回复 支持 反对

使用道具 举报

9#
发表于 2010-1-10 06:57:16 | 只看该作者
查了一下,FORMAT DATATIME是吗?
FormatDateTime 函数
返回表达式,此表达式已被格式化为日期或时间。

FormatDateTime(Date[, NamedFormat])

参数
Date

必选项。要被格式化的日期表达式。

NamedFormat

可选项。指示所使用的日期/时间格式的数值,如果省略,则使用 vbGeneralDate。

设置
NamedFormat 参数可以有以下值:

常数 值 描述
vbGeneralDate 0 显示日期和/或时间。如果有日期部分,则将该部分显示为短日期格式。如果有时间部分,则将该部分显示为长时间格式。如果都存在,则显示所有部分。  
vbLongDate 1 使用计算机区域设置中指定的长日期格式显示日期。
vbShortDate 2 使用计算机区域设置中指定的短日期格式显示日期。
vbLongTime 3 使用计算机区域设置中指定的时间格式显示时间。
vbShortTime 4 使用 24 小时格式 (hh:mm) 显示时间。


说明
下面例子利用 FormatDateTime 函数把表达式格式化为长日期型并且把它赋给 MyDateTime:

Function GetCurrentDate
  'FormatDateTime 把日期型格式化为长日期型。
  GetCurrentDate = FormatDateTime(Date, 1)
End Function

但是我还是不太明白.....
回复 支持 反对

使用道具 举报

10#
发表于 2010-1-10 06:57:20 | 只看该作者
Response.write StrSQL
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-20 02:37 , Processed in 0.128377 second(s), 9 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表