Ако приемем, че нашата колона за дата е 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
Но ако използвате действителни типове данни за дата/час, потребителите на вашите данни ще ги насочат към подходящи типове дата/час в клиента и след това могат да изберат как най-добре да ги покажат за своите нужди.
Другото предимство на използването на типове дата/час е, че те налагат целостта на данните . Изчакайте, докато някой добави или промени дата, за да я направи невалидна – да речем „20142331“. След това, когато трябва да покажете тези данни във формуляр с име на месец („22 януари 2014 г., да речем), ще настъпи веселие, когато получите изключение, опитвайки се да съпоставите номера на месеца с името на месец.
Ако няма да използвате тип дата/час, тогава запазете година, месец и ден поотделно като цели числа с подходящи ограничения за проверка, за да наложите целостта:
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
)
)