标题:从字符串转换为 datetime 时发生语法错误。
只看楼主
月夜NO风
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2008-6-29
结帖率:100%
 问题点数:0 回复次数:25 
从字符串转换为 datetime 时发生语法错误。
做的一个订单查询系统,从日期查询订单,用的是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     
上网查的都和我的不同.为什么呢?
搜索更多相关主题的帖子: datetime 语法 字符 
2008-07-17 11:56
dhdhzzw
Rank: 1
等 级:新手上路
帖 子:949
专家分:0
注 册:2007-8-13
得分:0 
查询时先格式化
format
2008-07-17 13:23
hmhz
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:30
帖 子:1890
专家分:503
注 册:2006-12-17
得分:0 
模糊查询好象不需要格式化吧,要不就不是模糊查询了

[编程论坛] ASP超级群:49158383  敲门暗号:ASP编程
龍艺博客 http://www.
2008-07-17 13:30
madpbpl
Rank: 4
等 级:贵宾
威 望:11
帖 子:2876
专家分:244
注 册:2007-4-5
得分:0 
Response.write StrSQL
2008-07-17 13:51
月夜NO风
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2008-6-29
得分:0 
查了一下,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

但是我还是不太明白.....
2008-07-17 15:11
dhdhzzw
Rank: 1
等 级:新手上路
帖 子:949
专家分:0
注 册:2007-8-13
得分:0 
顺便说一下,asp里'%"+Request.Form("PurBd")+"%'和'%"&Request.Form("PurBd")&"%'的区别在哪里?
2008-07-17 15:31
月夜NO风
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2008-6-29
得分:0 
[bo][un]dhdhzzw[/un] 在 2008-7-17 15:31 的发言:[/bo]

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

我当然不知道啦........
我只知道他们都是变量......
相信这个你也知道啦~
哈哈
2008-07-17 16:33
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
得分:0 
[bo][un]dhdhzzw[/un] 在 2008-7-17 15:31 的发言:[/bo]

顺便说一下,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
任意表达式。
说明
[bo]虽然也可以使用 + 运算符连接两个字符串,但是您仍应使用 & 运算符进行字符串的连接以避免混淆,提供易理解的代码。
这是因为在使用 + 运算符时,有可能无法确定是做加法还是做字符串连接。[/bo]

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

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

如果一个表达式或两个表达式都为 Null 表达式,则 result 为 Null。如果两个表达式都为Empty,则 result 为 Integer 子类型。但是如果一个表达式为 Empty,则返回另一个表达式作为 result。
2008-07-17 17:40
月夜NO风
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2008-6-29
得分:0 
试了一天多,还是出现错,我已经用了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,"'","''") & "'" ' 防止注入攻击
2008-07-19 08:28
月夜NO风
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2008-6-29
得分:0 
假如上面的:
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'
2008-07-19 08:32



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-224152-1-1.html




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

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