Förutsatt att vår datumkolumn är char
eller varchar
, du kan göra något sånt här
update foo
set dates = right(dates,4) + left(dates,4)
Eller det här
update foo
set dates = replace( convert(varchar,convert(datetime,dates,112),110) , '-' , '' )
Om allt du vill göra är att visa din text annorlunda, det enklaste sättet är
select ... ,
dates = right(dates,4) + left(dates,4)
from foo
Eller skapa en vy och använd den istället för den ursprungliga tabellen:
create view foo_view
as select id ,
dates = right(dates,4) + left(dates,4)
from foo
Men om du använder faktiska datum/tid datatyper, kommer användare av din data att få dem mappade till lämpliga datum/tid typer i klienten och kan sedan välja hur de bäst ska visas för deras behov.
Den andra fördelen med att använda datum/tid-typer är att de upprätthåller dataintegritet . Vänta tills någon lägger till eller ändrar ett datum för att göra det ogiltigt - säg "20142331". Sedan, när du behöver visa den informationen i ett formulär med ett månadsnamn (säg 22 januari 2014), kommer det att uppstå munterhet när du får ett undantag som försöker mappa månadsnumret till ett månadsnamn.
Om du inte tänker använda en datum/tid-typ, lagra sedan år, månad och dag individuellt som heltalsvärden med lämpliga kontrollbegränsningar för att upprätthålla integritet:
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
)
)