私は以下の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'
上記のSQLを実行すると、以下の例外がスローされました。
Conversion failed when converting date and/or time from character string.
last_accessed_on
であるDateTime2
に挿入しようとしている場合、SQLがフォーマットしないvarchar
に変換しているという問題があります。分からない。
コードをこれに変更すると、機能するはずです。日付の形式が次のように変更されていることに注意してください。YYYY-MM-DD 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'
または、CAST
を使用する場合は、次のものに置き換えます。
CAST('2014-07-23 09:37:00.000' AS datetime2)
これは SQL ISO日付形式 を使用しています。
Last_accessed_onのように見えますが、これは日付時刻であり、'23 -07-2014 09:37:00 'をvarcharに変換しています。これは機能せず、変換エラーが発生します。試してみる
last_accessed_on= convert(datetime,'23-07-2014 09:37:00', 103)
ただし、キャストを回避し、'23-07-2014 09:37:00'で更新できると思います。形式が正しいことを考えると、機能するはずです。
last_accessed_on(これはDateTime2 type)でVarchar値を渡そうとしているため、クエリは機能しません。
あなたのクエリは
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)