Supondo que nossa coluna de data seja
char
ou varchar
, você poderia fazer algo assim update foo
set dates = right(dates,4) + left(dates,4)
Ou isto
update foo
set dates = replace( convert(varchar,convert(datetime,dates,112),110) , '-' , '' )
Se tudo o que você quer fazer é exibir seu texto de forma diferente, a maneira mais fácil é
select ... ,
dates = right(dates,4) + left(dates,4)
from foo
Ou crie uma visualização e use-a em vez da tabela original:
create view foo_view
as select id ,
dates = right(dates,4) + left(dates,4)
from foo
Mas se você usar tipos de dados de data/hora reais, os usuários de seus dados os mapearão para tipos de data/hora adequados no cliente e poderão escolher a melhor forma de exibi-los para suas necessidades.
A outra vantagem de usar tipos de data/hora é que eles reforçam a integridade de dados . Aguarde até que alguém adicione ou altere uma data para torná-la inválida — digamos, `20142331'. Então, quando você precisar exibir esses dados em um formulário com um nome de mês ('22 de janeiro de 2014, digamos), a hilaridade ocorrerá quando você receber uma exceção tentando mapear o número do mês para um nome de mês.
Se você não for usar um tipo de data/hora, armazene ano, mês e dia individualmente como valores inteiros com restrições de verificação adequadas para reforçar a integridade:
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
)
)