2017-11-10 1 views
-2

私は20/03/201603/20/201602/03/2003/jun/18のような日付のリストを持っています。この入力形式では、DD/MM/YYYY,MM/DD/YYYY,DD/MM/YYdd/MMM/YYの形式になりますが、出力は任意の日付形式ではなくMM/DD/YYYYのようになります。SQLサーバーの任意の日付をMM/DD/YYYY形式に変換する

+5

それはあなたがに変換すべきかを決めることができますどのように、それを自動的に行うことがIMPOSIBLEです次の日付: '01-02-2017'。あなたの投稿に応じて、1月の2月または2月の初めになる可能性があります。 –

+0

もう1つの例として、適切なデータ型を選択する必要があります。 (var)charの日付は問題になります。 – HoneyBadger

答えて

0
ここ

が一つのアプローチ

DECLARE @DATA VARCHAR(MAX) 

SET @DATA = '03/jun/18' 

SELECT CONVERT(varchar(10), COALESCE(CASE WHEN CHARINDEX('/', SUBSTRING(@DATA, CHARINDEX('/', @DATA)+1, LEN(@DATA))) > 3 THEN @DATA ELSE NULL END, 
      CASE WHEN CHARINDEX('/', REVERSE(@DATA))-1 < 4 THEN @DATA ELSE NULL END, 
      CONVERT(DATETIME, @DATA, CASE WHEN CAST(SUBSTRING(@DATA, 4, 2) AS INT) > 12 THEN 101 ELSE 103 END) 
     ), 101) [MM/DD/YYYY] 

結果である:

@DATA = '20/03/2016'

MM/DD/YYYY 
03/20/2016 

@DATA = '03/20/2016'

MM/DD/YYYY 
03/20/2016 

@DATA = '02/03/20'

MM/DD/YYYY 
02/03/2020 

@DATA = '03/6月/ 18'

MM/DD/YYYY 
06/03/2018 
関連する問題