2012-04-24 4 views

答えて

102
CONVERT(datetime, '24.04.2012', 104) 

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

+3

問題ありません。 TSQLはこのエラーを示します:キーワード 'CONVERT'の近くの構文が正しくありません。 – pordi

+0

CONVERTとparenの間のスペースを削除します。CONVERT(datetime、'24 .04.2012 '、104) – MAbraham1

+0

リンクされたドキュメントで説明したように、' 104 'は入力文字列のフォーマットを示します。 – DCShannon

24

Microsoft SQL Date Formats

CONVERT(DateTime, DateField, 104) 
+0

'24-04-

はまた、これらのマイクロソフトMSDNの参照を参照してください。 2012年はない'MM-dd-yyyy'を期待するので、有効な日付として認識されます。 – Khan

+2

' CONVERT(DateTime、DateField、104) 'についてどうですか?これは、dd.mm.yyyy形式を使用するようにSQL Serverを指示する必要があります... – therealmitchconnors

+0

はい、私はあまりにもありがとう! –

6

をCONVERTの事は動作しますが、あなたが実際にそれを使用するべきではありません。なぜSQL Serverで文字列値を解析しているのか自分に尋ねるべきです。これは、手動でいくつかのデータを修復するワンタイムジョブの場合、もう一度そのデータを取得することはできませんが、これは問題ありませんが、アプリケーションがこれを使用している場合は、何かを変更する必要があります。最も良い方法は、 "日付"データ型を使用することです。これがユーザーの入力であれば、これはもっと悪いことです。次に、クライアントでまずチェックを行う必要があります。 SQL Serverに日付が必要な場所に文字列値を渡したい場合は、常にISO形式( 'YYYYMMDD')を使用できます。自動的に変換する必要があります。

+3

外部システムからデータファイルをインポートする場合、入力列はこれらの形式のいずれかになります。"05/31/2013"ですが、文字列として入力されますか?そして、あなたは、そのデータをインポートするためのストアドプロシージャやSSISをインポートするためのストアドプロシージャを作成していますか? CONVERTは適切なものになりますか? –

+0

MS SQL Serverのホスト分析データモデルでは、トランザクションとは対照的に、CONVERTを使用するのはまったく問題ありません。なぜなら、日付としてすぐに入力できないような外部ソースを処理する必要があるからです(David Barrowsが上で述べたように)。 – Will

+0

日付のデフォルトの文字列リテラル形式は[YYYY-MM-DD]です(https://docs.microsoft.com/en-us/sql/t-sql/data-types/date-transact-sql) –

10

ここではうまくいくソリューションです。基本的な文は、インラインしようと-解析が含まれています

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列は内部データベース追跡の目的のためだけです。

+0

これを使用しますプロダクションコードで。 – MAbraham1

0
CONVERT(DateTime, ExpireDate, 121) AS ExpireDate 

必要なものでしょう、結果:

2012-04-24 00:00:00.000 
関連する問題