2

テーブルを更新しようとしていますが、varchar 値しか与えられません。

UPDATE table
SET Deadline = CONVERT(DATETIME, '06/18/2012 12:00 AM')
FROM table
WHERE nominal_id = 2650

私が得るエラーは次のとおりです。

メッセージ 241、レベル 16、状態 1、行 10
文字列から日付や時刻を変換するときに、変換に失敗しました。

しかし、単純な を実行するSELECT CONVERT(DATETIME, '12:00 PM')と、適切な値が返されます。ここで何が欠けているようですか?varchar をキャストする必要がありますか?

4

1 に答える 1

6

日付/時刻リテラルには、明確で地域にとらわれない文字列を常に使用する必要があります。あなたの場合、これはうまくいくはずです(そして、日時への明示的な変換は必要ありません):

'20120618 12:00 AM'

入力形式を変更することを強くお勧めします。入力形式を変更できない場合は、おそらく次のようになります。

CONVERT(DATETIME, CONVERT(VARCHAR(19), '06/18/2012 12:00 AM', 101))
于 2012-06-18T17:22:01.313 に答える