J'ai ci-dessous SQL.
UPDATE student_queues
SET Deleted=0,
last_accessed_by='raja',
last_accessed_on=CONVERT(VARCHAR(24),'23-07-2014 09:37:00',113)
WHERE std_id IN ('2144-384-11564')
AND reject_details='REJECT'
lorsque j'ai exécuté le SQL ci-dessus, l'exception ci-dessous a été levée.
Conversion failed when converting date and/or time from character string.
Si vous essayez de vous insérer dans last_accessed_on
, qui est un DateTime2
, votre problème vient du fait que vous le convertissez en varchar
dans un format que SQL ne comprend pas.
Si vous modifiez votre code en cela, cela devrait fonctionner, notez que le format de votre date a été changé en: AAAA-MM-JJ hh: mm: ss :
UPDATE student_queues
SET Deleted=0,
last_accessed_by='raja',
last_accessed_on=CONVERT(datetime2,'2014-07-23 09:37:00')
WHERE std_id IN ('2144-384-11564') AND reject_details='REJECT'
Ou si vous souhaitez utiliser CAST
, remplacez par:
CAST('2014-07-23 09:37:00.000' AS datetime2)
Cela utilise le SQL ISO Date Format .
Il semble que last_accessed_on soit une date et que vous convertissez '23 -07-2014 09:37:00 'en varchar. Cela ne fonctionnerait pas et vous donnerait des erreurs de conversion. Essayer
last_accessed_on= convert(datetime,'23-07-2014 09:37:00', 103)
Je pense que vous pouvez éviter le casting et mettre à jour avec '23-07-2014 09:37:00'. Cela devrait fonctionner étant donné que le format est correct.
Votre requête ne fonctionnera pas car dans last_accessed_on (qui est de type DateTime2), vous essayez de passer une valeur Varchar.
Votre requête serait
UPDATE student_queues SET Deleted=0 , last_accessed_by='raja', last_accessed_on=convert(datetime,'23-07-2014 09:37:00', 103)
WHERE std_id IN ('2144-384-11564') AND reject_details='REJECT'
DECLARE @FromDate DATETIME
SET @FromDate = 'Jan 10 2016 12:00AM'
DECLARE @ToDate DATETIME
SET @ToDate = 'Jan 10 2017 12:00AM'
DECLARE @Dynamic_Qry nvarchar(Max) =''
SET @Dynamic_Qry='SELECT
(CONVERT(DATETIME,(SELECT
CASE WHEN ( ''IssueDate'' =''IssueDate'') THEN
EMP_DOCUMENT.ISSUE_DATE
WHEN (''IssueDate'' =''ExpiryDate'' ) THEN
EMP_DOCUMENT.EXPIRY_DATE ELSE EMP_DOCUMENT.APPROVED_ON END
CHEKDATE ), 101)
)FROM CR.EMP_DOCUMENT as EMP_DOCUMENT WHERE 1=1
AND (
CONVERT(DATETIME,(SELECT
CASE WHEN ( ''IssueDate'' =''IssueDate'') THEN
EMP_DOCUMENT.ISSUE_DATE
WHEN (''IssueDate'' =''ExpiryDate'' ) THEN EMP_DOCUMENT.EXPIRY_DATE
ELSE EMP_DOCUMENT.APPROVED_ON END
CHEKDATE ), 101)
) BETWEEN '''+ CONVERT(CHAR(10), @FromDate, 126) +''' AND '''+CONVERT(CHAR(10), @ToDate , 126
)
+'''
'
print @Dynamic_Qry
EXEC(@Dynamic_Qry)