2017-11-03 17 views
2

奇妙なビットですが、文字列として年と月の行と行があり、変換しようとしています日付形式。年と月のみの文字列を年と月の日付形式に変換する

これは完全な日付ではありませんが、尋ねる価値があるため、これを行うことはできません。データの

UPDATE table 
SET [Year Month] = CONVERT (DATE, [Year Month], 103) 

戻り

Conversion failed when converting date and/or time from character string. 

文字列は次のようになります。

|Year Month| 
| 2015-02 | 
| 2016-06 | 
| 2016-01 | 
| 2020-09 | 

は他の記事を見たことがありますが、それらはすべて、すでに完全な日付を持つとちょうど基本的に一日の切断から生じます年の月などを取得するが、この場合は、私は文字列として持っており、年月日にフォーマットする必要がある唯一の年と月

+0

ようにしたい日付は何ですか? 「01」または月末ですか?または、他の何か? – gotqn

+0

どのバージョンのSQL Serverですか? 'select @@ version' – SQLChao

+0

私はちょうど上記の同じデータを返すが、文字列の代わりに日付形式として置き換えたい – VS1SQL

答えて

1

あなたは、有効な日付フィールドに結合year/monthを含むテキストフィールドを変換するために、(月のここでは最初の)日を選択してください必要があります。

SQL Serverの(変換ISO date YYYY-MM-DD、YYYY/MM/DD、YYYYMMDD ...日まで):

UPDATE table 
SET [Year Month Day] = cast([Year Month] + '-01' as DATE) 

オラクル(明示的なフォーマットを選択することができます):

UPDATE table 
SET YearMonthDay = TO_DATE(YearMonth || '-01', 'YYYY-MM-DD') 
0

あなたは、SQL Server 2012で始まるDATEFROMPARTSを使用することができますが、あなたは指定する必要がありますそれのための日DATE

--set to first day of month 
UPDATE table 
SET [Year Month] = DATEFROMPARTS (LEFT([Year Month], 4), RIGHT([Year Month], 2) , 1) 

DECLARE @Year_Month VARCHAR(7) = '2015-02' 

SELECT DATEFROMPARTS (LEFT(@Year_Month, 4), RIGHT(@Year_Month, 2) , 1) 
関連する問題