Supponendo che la nostra colonna della data sia char
o varchar
, potresti fare qualcosa del genere
update foo
set dates = right(dates,4) + left(dates,4)
O questo
update foo
set dates = replace( convert(varchar,convert(datetime,dates,112),110) , '-' , '' )
Se tutto ciò che vuoi fare è visualizzare il tuo testo in modo diverso, il modo più semplice è
select ... ,
dates = right(dates,4) + left(dates,4)
from foo
Oppure crea una vista e usala al posto della tabella originale:
create view foo_view
as select id ,
dates = right(dates,4) + left(dates,4)
from foo
Ma se utilizzi tipi di dati di data/ora effettivi, gli utenti dei tuoi dati li mappano a tipi di data/ora adeguati nel client e possono quindi scegliere il modo migliore per visualizzarli per le loro esigenze.
L'altro vantaggio dell'utilizzo dei tipi di data/ora è che applicano l'integrità dei dati . Attendi che qualcuno aggiunga o modifichi una data per renderla non valida, ad esempio "20142331". Quindi, quando devi visualizzare quei dati in un modulo con il nome di un mese ("22 gennaio 2014, ad esempio), ne deriverà ilarità quando ottieni un'eccezione cercando di mappare il numero del mese con il nome di un mese.
Se non intendi utilizzare un tipo di data/ora, archivia anno, mese e giorno singolarmente come valori interi con vincoli di controllo adeguati per rafforzare l'integrità:
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
)
)