[英]Conversion failed from string to datetime in SQL Server in Dynamic Query
I am facing the problem to convert into datetime.. 我正面临转换为datetime的问题..
DECLARE @sql nvarchar(max)
DECLARE @Lastdate datetime
SET @Update = N'
SELECT TOP 1
'+@Lastdate+' = Purchase.LastUpdated
FROM Purchase
WHERE ID = 15
'
LastUpdated
is also datetime format in database LastUpdated
也是数据库中的日期时间格式
Then why It cannot convert 那么为什么它无法转换
I want to set the datetime into declared variable @LastDate from purchase.lastupdate using sp_executesql only
我想使用sp_executesql从buy.lastupdate将datetime设置为声明的变量@LastDate
This is another possible approach to set the value of @LastUpdated
using sp_executesql
: 这是使用
sp_executesql
设置@LastUpdated
值的另一种可能方法:
-- Declaration
DECLARE @sql nvarchar(max)
DECLARE @LastUpdated datetime
DECLARE @err int
-- Statement
SET @sql = N'
SELECT TOP 1 @LastUpdated = Purchase.LastUpdated
FROM Purchase
WHERE ID = 15
'
-- Execution
EXEC @err = sp_executesql
@sql,
N'@LastUpdated datetime OUTPUT',
@LastUpdated OUTPUT
-- Test output
IF @err = 0
PRINT @LastUpdated
ELSE
PRINT 'Error'
If you are trying to pass in a constant value, then use sp_executesql
. 如果您尝试传入常量值,请使用
sp_executesql
。 Your query doesn't really seem very useful. 您的查询似乎并不是非常有用。 This seems like a reasonable approximation:
这似乎是一个合理的近似值:
DECLARE @LastUpdated datetime;
SET @Update = N'
SELECT TOP 1 @LastUpdated as LastUpdated
FROM Purchase
WHERE ID = 15';
EXEC sp_executesql @Update,
N'@LastUpdated datetime',
@LastUpdated=@LastUpdated;
EDIT: 编辑:
To update data, you need to use UPDATE
. 要更新数据,您需要使用
UPDATE
。 But you don't need dynamic SQL: 但是你不需要动态SQL:
UPDATE Purchase
SET LastUpdated = @LastUpdated
WHERE ID = 15;
If ID
is not unique and you want to limit this to one (arbitrary) row: 如果
ID
不是唯一的,并且您希望将其限制为一个(任意)行:
UPDATE p
SET LastUpdated = @LastUpdated
FROM (SELECT TOP (1)
FROM Purchase
) p
WHERE ID = 15;
You should use an ORDER BY
with TOP
so you can control which row you are affecting. 您应该使用带有
TOP
的ORDER BY
,以便控制您正在影响的行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.