web-dev-qa-db-ja.com

文字列を日付T-SQLに変換する方法は?

T-SQLで文字列を日付に変換するにはどうすればよいですか?

私のテストケースは文字列です:'24.04.2012'

79
CONVERT(datetime, '24.04.2012', 104)

トリックを行う必要があります。詳細については、こちらを参照してください: "CAST and CONVERT(Transact-SQL)"

125
Chris Roberts

Microsoft SQL日付形式

CONVERT(DateTime, DateField, 104)
25

うまく機能するソリューションを次に示します。基本的なステートメントには、インライン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リファレンスも参照してください。

15
MAbraham1

CONVERTは機能しますが、実際には使用しないでください。 SQL-Serverで文字列値を解析する理由を自問する必要があります。これが、一部のデータを手動で修正する1回限りのジョブである場合、そのデータを再度取得することはできませんが、これを使用するアプリケーションがある場合は、何かを変更する必要があります。最善の方法は、「日付」データ型を使用することです。これがユーザー入力である場合、これはさらに悪化します。次に、最初にクライアントをチェックインする必要があります。 SQL Serverが日付を予期する場所で文字列値を本当に渡したい場合は、常にISO形式( 'YYYYMMDD')を使用でき、自動的に変換する必要があります。

8
Eric

次を使用できます。

SELECT CONVERT(datetime, '24.04.2012', 103) AS Date

リファレンス: CASTおよびCONVERT(Transact-SQL)

4
Seann Alexander
CONVERT(DateTime, ExpireDate, 121) AS ExpireDate

必要なことを行います、結果:

2012-04-24 00:00:00.000
0