从存储过程中的字符串转换datetime时转换失败

Raj*_*mar 5 sql

我在存储过程中运行下面的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)
Run Code Online (Sandbox Code Playgroud)

Tar*_*ryn 10

您需要将其转换@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)
Run Code Online (Sandbox Code Playgroud)

或者只是让你@ddtime作为一个varchar而不是一个datetime.

Declare @ddtime varchar(25)
Run Code Online (Sandbox Code Playgroud)

convert(varchar(25), @ddtime, 121)叶您最初将其设置为相同格式的日期.

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