2016-07-07 5 views
3

基本的には、varchar(10)という形式のいくつかの列に '##。##。####'(day.month.year)という大規模な表を継承しました。特定の日付のこれらの列をDatetime列に変換したいと思います。SQLサーバー:テーブル内のdatetimeを変換する

プログラミング言語で各レコードを選択し、日付を変換してからDatetime(おそらく別の列に更新する)の代わりにSQLサーバー上で(SQLクエリの単一のセットを通じて)これらを変換する方法はありますか)?

+2

これを行うには、update tableName set newfield = \t(oldfield、4,2)+ '/' + left(oldfield、2)+ '/' + right(oldfield、 4)datetime)) ' –

+1

@ JimHewittあなたはコメントの代わりに答えを出すべきです。 –

答えて

3

必要はありません...=(select...)この操作は簡単で簡単です。

ALTER TABLE YourTable 
ADD NewDateColumn DATETIME 

update YourTable set NewDateColumn = convert(date, OldDateColumn, 104) 
--Magic 104 is for dd.MM.yyyy date format 

これだけです。

+0

ありがとう!魅力的な作品! –

2

ジムのコメントの代わりにこれはどうですか?からそれを取得したい場合があります誰かのために

UPDATE t 
SET t.NewDateColumn = (SELECT CONVERT(DATE, OldDateColumn, 104) 
         FROM YourTable ta WHERE t.ID = ta.ID) 
FROM YourTable t 

UPDATE(私はあなたが使用してきた同じ標準を使用したいと仮定)に続いて

ALTER TABLE YourTable 
ADD NewDateColumn DATETIME 

:まず新しいDATE列を追加米国の標準へのドイツ標準:これは、あなたがID列を持っています

UPDATE t 
SET t.NewDateColumn = (SELECT CONVERT(DATETIME, 
             CONVERT(DATE, OldDateColumn, 104) 
             ,101) 
         FROM YourTable ta WHERE t.ID = ta.ID) 
FROM YourTable t 

想定しています。

関連する問題