【发布时间】:2015-08-10 10:57:38
【问题描述】:
我收到以下错误
Microsoft OLE DB Provider for SQL Server 错误 '80040e14' 数据 类型 datetime 和 datetime2 在 add 运算符中不兼容。
<%
Set cnnSimple = Server.CreateObject("ADODB.Connection")
cnnSimple.Open "Provider=SQLOLEDB.1;Initial Catalog=P;DataSource=S\SQLEXPRESS; Persist Security Info=True;User ID=xx;Password=xxxxxxx"
sql = "SELECT DISTINCT" & _
"'<option value=""' + CAST([date_required] AS DATETIME) + '"">' + " & _
"[date_required] + '</option>' " & _
"FROM " & _
"qryOutstandingPOLinesSource2 where supplier='" & suppliercode &"' and date_required < GETDATE()"
set rs = Server.CreateObject("ADODB.RecordSet")
rs.Open sql, cnnSimple, 0, 1, 1
if rs.eof then
no_rows3 = true
else
str = rs.GetString()
End If
%>
有解决方法吗?我尝试过转换为VARCHAR,但没有成功。
【问题讨论】:
-
请编辑您的问题并提供示例数据和所需结果。此外,打印出 after 变量替换后的 SQL 语句也很有帮助。
-
sql-server-helper.com/tips/… 这可能会帮助您找到无法投射的原因。
-
您发布的问题在任何地方都没有显示
ADD运算符的使用,请您更新您的问题以显示实际的问题代码。 -
你最好把它放到一个存储过程中。另外,您的代码是否容易受到注入攻击?
-
首先,当您生成
VARCHAR数据(string) 时,您不应该转换为DATETIME。例如,如果您将其更改为CAST([date_required] AS VARCHAR(50)),您会得到相同的错误还是不同的错误?我的猜测是错误是一个红鲱鱼,因为你试图做一个不兼容的CAST。
标签: sql sql-server asp-classic