Za předpokladu, že náš sloupec data je char
nebo varchar
, můžete udělat něco takového
update foo
set dates = right(dates,4) + left(dates,4)
Nebo toto
update foo
set dates = replace( convert(varchar,convert(datetime,dates,112),110) , '-' , '' )
Pokud vše, co chcete udělat, je zobrazit váš text jinak, nejjednodušší způsob je
select ... ,
dates = right(dates,4) + left(dates,4)
from foo
Nebo vytvořte pohled a použijte jej místo původní tabulky:
create view foo_view
as select id ,
dates = right(dates,4) + left(dates,4)
from foo
Pokud ale použijete skutečné datové typy data/času, uživatelé vašich dat je namapují na vhodné typy data/času v klientovi a pak si mohou vybrat, jak je nejlépe zobrazit pro své potřeby.
Další výhodou použití typů data/času je, že vynucují integritu dat . Počkejte, až někdo přidá nebo nezmění datum, aby bylo neplatné – řekněme „20142331“. Když pak potřebujete zobrazit tato data ve formuláři s názvem měsíce (řekněme 22. ledna 2014), bude veselo, když dostanete výjimku při pokusu o mapování čísla měsíce na název měsíce.
Pokud nehodláte používat typ data/času, uložte rok, měsíc a den jednotlivě jako celočíselné hodnoty s vhodnými kontrolními omezeními, abyste zajistili integritu:
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
)
)