I have a table called Applications
that has a column called StatusChangeDate
that is of type datetime
. I am trying to use a dynamic query to update the StatusChangeDate
.
My initial query was as follows:
DECLARE @TableName NVARCHAR(MAX) = (SELECT TOP 1 name FROM sys.Tables WHERE Name LIKE '%AuthorizedUsers_%');
DECLARE @UTCDate DATETIME = GETUTCDATE();
DECLARE @ApplicationsTableUpdateQuery NVARCHAR(100) = '
UPDATE A
SET StatusChangeDate = ' + @UTCDate + '
FROM [MyDb_1].[dbo].[Applications] A
INNER JOIN [MyDb_2].[dbo].[' + @TableName +'] A2
ON A.ApplicationId = A2.ApplicationId
'
EXEC sp_executesql @ApplicationsTableUpdateQuery
That gave me the following error: "Conversion failed when converting date and/or time from character string."
After I did some research, what I found was that I needed to convert my @UTCDate
variable to a VARCHAR, and my updated query was as follows:
DECLARE @ApplicationsTableUpdateQuery NVARCHAR(100) = '
UPDATE A
SET StatusChangeDate = ' + CONVERT(VARCHAR(100), @UTCDate) + '
FROM [MyDb_1].[dbo].[Applications] A
INNER JOIN [MyDb_2].[dbo].[' + @TableName +'] A2
ON A.ApplicationId = A2.ApplicationId
'
EXEC sp_executesql @ApplicationsTableUpdateQuery
But that gave me a syntax error that said: "Incorrect syntax near '19'
" which I think is the format that @UTCDate since today is the 19th of march.
I am confused about how would I solve this. Could someone shed some light on what I am doing wrong and how to properly do this?