Zakładając, że nasza kolumna daty to char
lub varchar
, możesz zrobić coś takiego
update foo
set dates = right(dates,4) + left(dates,4)
Albo to
update foo
set dates = replace( convert(varchar,convert(datetime,dates,112),110) , '-' , '' )
Jeśli chcesz tylko wyświetlać Twój tekst inaczej, najłatwiej jest
select ... ,
dates = right(dates,4) + left(dates,4)
from foo
Lub utwórz widok i użyj go zamiast oryginalnej tabeli:
create view foo_view
as select id ,
dates = right(dates,4) + left(dates,4)
from foo
Ale jeśli używasz rzeczywistych typów danych daty/godziny, użytkownicy Twoich danych otrzymają je zmapowane do odpowiednich typów daty/godziny w kliencie, a następnie będą mogli wybrać, jak najlepiej je wyświetlić dla swoich potrzeb.
Inną zaletą używania typów daty/godziny jest to, że wymuszają integrację danych . Poczekaj, aż ktoś doda lub zmieni datę, aby uczynić ją nieważną — powiedzmy „20142331”. Następnie, gdy będziesz musiał wyświetlić te dane w formularzu z nazwą miesiąca (np. „22 stycznia 2014 r.), wesołość pojawi się, gdy otrzymasz wyjątek podczas próby zmapowania numeru miesiąca na nazwę miesiąca.
Jeśli nie zamierzasz używać typu daty/godziny, przechowuj osobno rok, miesiąc i dzień jako wartości całkowite z odpowiednimi ograniczeniami sprawdzającymi, aby wymusić integralność:
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
)
)