T-SQLで文字列を日付に変換するにはどうすればよいですか?
私のテストケースは文字列です:'24.04.2012'
CONVERT(datetime, '24.04.2012', 104)
トリックを行う必要があります。詳細については、こちらを参照してください: "CAST and CONVERT(Transact-SQL)"
CONVERT(DateTime, DateField, 104)
うまく機能するソリューションを次に示します。基本的なステートメントには、インラインtry-parseが含まれています。
SELECT TRY_PARSE('02/04/2016 10:52:00' AS datetime USING 'en-US') AS Result;
生産バージョンで実装したものは次のとおりです。
UPDATE dbo.StagingInputReview
SET ReviewedOn =
ISNULL(TRY_PARSE(RTrim(LTrim(ReviewedOnText)) AS datetime USING 'en-US'), getdate()),
ModifiedOn = (getdate()), ModifiedBy = (suser_sname())
-- Check for empty/null/'NULL' text
WHERE not ReviewedOnText is null
AND RTrim(LTrim(ReviewedOnText))<>''
AND Replace(RTrim(LTrim(ReviewedOnText)),'''','') <> 'NULL';
ModifiedOn列とModifiedBy列は、内部データベースの追跡のみを目的としています。
これらのMicrosoft MSDNリファレンスも参照してください。
CONVERTは機能しますが、実際には使用しないでください。 SQL-Serverで文字列値を解析する理由を自問する必要があります。これが、一部のデータを手動で修正する1回限りのジョブである場合、そのデータを再度取得することはできませんが、これを使用するアプリケーションがある場合は、何かを変更する必要があります。最善の方法は、「日付」データ型を使用することです。これがユーザー入力である場合、これはさらに悪化します。次に、最初にクライアントをチェックインする必要があります。 SQL Serverが日付を予期する場所で文字列値を本当に渡したい場合は、常にISO形式( 'YYYYMMDD')を使用でき、自動的に変換する必要があります。
CONVERT(DateTime, ExpireDate, 121) AS ExpireDate
必要なことを行います、結果:
2012-04-24 00:00:00.000