【问题标题】:CAST - The data types datetime and datetime2 are incompatible in the add operatorCAST - 数据类型 datetime 和 datetime2 在 add 运算符中不兼容
【发布时间】: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


【解决方案1】:

您只需将数据转换为NVARCHAR,就像这样...

sql = "SELECT DISTINCT" & _
  "'<option value=""' + CONVERT(NVARCHAR, [date_required]) + '"">' + " & _
  "CONVERT(NVARCHAR, [date_required]) + '</option>' " & _
  "FROM " & _
  "qryOutstandingPOLinesSource2 where supplier='" & suppliercode &"' and date_required < GETDATE()"

根据 Lankmart 的评论进行了编辑。使用 CONVERT 而不是 CAST 将允许稍微更好的格式化能力,但它是特定于 SQL Server 的,而您可能会发现 CAST 在更广泛的 T-SQL 实现中可用。

【讨论】:

  • 通常最好使用CONVERT() 进行日期时间格式化,因为您可以更好地控制结果。
  • @Emma 就是这样,我以为你在问题中说过你已经尝试过了? “我已尝试强制转换为 VARCHAR,但没有成功”
  • @Lankymart 是的,我最初确实尝试过 VARCHAR,但遇到了另一个错误 - 当然这是我需要的 NVARCHAR .. 感谢您的所有帮助和有用的回复 - 非常感谢......总有一些太快了开枪并给出不好的代表 - 只问了一个问题! :)
  • @Emma: '总有一些人太快过早地开枪并给出不好的代表' 非常真实。
  • 再次感谢他们现在尝试转换解决方案。
猜你喜欢
  • 2017-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-29
相关资源
最近更新 更多