5

在存储过程中运行以下 sql 时出现转换错误,因为由于某种原因我无法转换为 varchar

Declare @sql varchar(100)
Declare @ddtime datetime

set @ddtime = '2012-02-03 22:14:50.057'

set @sql = 'select * from table1 where tdate='+@ddtime

exec(@sql)
4

3 回答 3

11

您需要将其转换@ddtime为 a ,varchar因为您将其包含在字符串中:

Declare @sql varchar(100)
Declare @ddtime datetime

set @ddtime = '2012-02-03 22:14:50.057'

set @sql =  'select * from table1 where tdate= '''+ convert(nvarchar(25), @ddtime, 121) + ''''

exec(@sql)

或者只是让你@ddtime作为 avarchar而不是 a datetime

Declare @ddtime varchar(25)

保留日期的convert(varchar(25), @ddtime, 121)格式与您最初设置的格式相同。

如何在 SQL Server 中格式化日期时间和日期

于 2012-05-09T14:06:16.207 回答
1

将@ddtime 变量数据类型更改为varchar。您正在尝试连接 varchar 和 datetime。

于 2012-05-09T14:06:54.787 回答
0

你的 ddtime 是日期时间

你不能将它连接到字符串。

改变

set @sql = 'select * from table1 where tdate='''+cast ( @ddtime as nvarchar(100))+''''

或者

改成

Declare @ddtime nvarchar(100)
于 2012-05-09T14:08:32.017 回答