Angenommen, unsere Datumsspalte ist char
oder varchar
, könnten Sie so etwas tun
update foo
set dates = right(dates,4) + left(dates,4)
Oder das
update foo
set dates = replace( convert(varchar,convert(datetime,dates,112),110) , '-' , '' )
Wenn Sie nur Anzeigen möchten Ihren Text anders, das ist am einfachsten
select ... ,
dates = right(dates,4) + left(dates,4)
from foo
Oder erstellen Sie eine Ansicht und verwenden Sie diese anstelle der ursprünglichen Tabelle:
create view foo_view
as select id ,
dates = right(dates,4) + left(dates,4)
from foo
Wenn Sie jedoch tatsächliche Datums-/Uhrzeitdatentypen verwenden, werden die Benutzer Ihrer Daten geeigneten Datums-/Uhrzeittypen im Client zugeordnet und können dann auswählen, wie sie für ihre Bedürfnisse am besten angezeigt werden.
Der andere Vorteil der Verwendung von Datums-/Uhrzeittypen besteht darin, dass sie die Datenintegrität erzwingen . Warten Sie, bis jemand ein Datum hinzufügt oder ändert, um es ungültig zu machen – sagen wir „20142331“. Wenn Sie diese Daten dann in einem Formular mit einem Monatsnamen anzeigen müssen (z. B. „22. Januar 2014“), kommt es zu Heiterkeit, wenn Sie eine Ausnahme erhalten, die versucht, die Monatsnummer einem Monatsnamen zuzuordnen.
Wenn Sie keinen Datums-/Uhrzeittyp verwenden, speichern Sie Jahr, Monat und Tag einzeln als Ganzzahlwerte mit geeigneten Prüfbedingungen, um die Integrität zu erzwingen:
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
)
)