日付列が char
であると仮定します または varchar
、このようなことができます
update foo
set dates = right(dates,4) + left(dates,4)
またはこれ
update foo
set dates = replace( convert(varchar,convert(datetime,dates,112),110) , '-' , '' )
やりたいことが表示だけなら あなたのテキストは別の方法で、最も簡単な方法は
select ... ,
dates = right(dates,4) + left(dates,4)
from foo
または、ビューを作成して、元のテーブルの代わりに使用します:
create view foo_view
as select id ,
dates = right(dates,4) + left(dates,4)
from foo
ただし、実際の日付/時刻データ型を使用すると、データのユーザーはクライアントで適切な日付/時刻型にマッピングされ、ニーズに合わせて最適な表示方法を選択できます。
日付/時刻型を使用するもう 1 つの利点は、データの整合性が強制されることです。 .誰かが日付を追加または変更して無効にするまで待ちます — たとえば、「20142331」。次に、そのデータを月名付きのフォーム ('2014 年 1 月 22 日など) に表示する必要がある場合、月番号を月名にマップしようとして例外が発生すると、陽気になります。
日付/時刻型を使用しない場合は、年、月、日を整数値として個別に格納し、整合性を確保するために適切なチェック制約を適用します。
create table foo
(
id int not null identity(1,1) primary key ,
yyyy int not null check ( yyyy between 1900 and 2100 ) ,
mm int not null check ( mm between 1 and 12 ) ,
dd int not null check ( dd between 1 and ( case mm
when 4 then 30
when 6 then 30
when 9 then 30
when 11 then 30
when 2 then case
when yyyy % 400 = 0 then 29
when yyyy % 100 = 0 then 28
when yyyy % 4 = 0 then 29
else 28
end
else 31
end
)
)