【问题标题】:Conversion failed when converting date转换日期时转换失败
【发布时间】:2013-10-30 08:41:28
【问题描述】:

我已经用谷歌搜索了,但没有找到任何与我的情况相符的内容。

declare @from_ datetime, @to_ datetime
SET @from_ = '2013-01-01' 
SET @to_ = '2013-10-01' 

DECLARE @query NVARCHAR(4000) 
SET @query = N'
DECLARE @from datetime, @to datetime
SET @from = CAST('''+@from_+''' AS datetime)
SET @to = CAST('''+@to_+''' AS datetime)
'

给出错误:

  Msg 241, Level 16, State 1, Line 34
Conversion failed when converting date and/or time from character string.

SET @query = N' 是第 34 行

我也尝试过使用CONVERT(datetime, '+@from_+', 102), 102)'''

只有

SET @from = CAST('+@from_+' AS datetime)

同样的结果

解决方案是 PIVOT 的一部分,所以我有声明、选择、透视和执行 @query。解决方案的其余部分运行良好,直到我开始使用日期时间。

【问题讨论】:

  • 为什么要在@from_ 和@to_ 周围添加额外的引号?这可能是您的问题的原因。
  • 它在哪里说“只有”......和“相同的结果”怎么样?
  • 即使使用 and 和 just,你仍然在它周围添加额外的东西,比如 '+ 和 +' 所以这也不起作用。带下划线的变量声明为 varchar,不带下划线的变量声明为日期时间?查看 t-clausen.dk 的回答

标签: sql sql-server-2008


【解决方案1】:

您的问题是您正在使用 varchar 添加日期时间。试试这个:

declare @from_ char(8), @to_ char(8)
SET @from_ = '20130101' 
SET @to_ = '20131001' 

DECLARE @query NVARCHAR(4000) 
SET @query = N'
DECLARE @from datetime, @to datetime
SET @from = CAST('''+@from_+''' AS datetime)
SET @to = CAST('''+@to_+''' AS datetime)
'

【讨论】:

  • 嗯,这解决了转换问题,现在我需要找出它为什么不匹配任何数据。更近一步(我认为)。啊,我的错。
【解决方案2】:

我不确定,但我猜您已将撇号(')附加到 @from_@to_

SET @from = CAST('''+@from_+''' AS datetime)
SET @to = CAST('''+@to_+''' AS datetime)

还有你为什么不直接设置这样的值

SET @from = @from_
SET @to = @to_

【讨论】:

  • 因为它是 PIVOT 的一部分,根据 - stackoverflow.com/a/14440162/185084
  • 好的。我会看看我是否发现它(或任何其他解决方案)在我的最后运行。
【解决方案3】:

这样试试

declare @from_ NVARCHAR(50), @to_ NVARCHAR(50)
SET @from_ = '2013-01-01' 
SET @to_ = '2013-10-01' 

DECLARE @query NVARCHAR(4000) 
SET @query = N'
DECLARE @from datetime, @to datetime
SET @from = CAST('''+@from_+''' AS datetime)
SET @to = CAST('''+@to_+''' AS datetime)'
EXEC SP_EXECUTESQL @query

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多