Ответ 1
Предполагая, что наш столбец даты 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
)
)