Salve,
innanzitutto, a prescindere dal db utilizzato, E' SEMRE D'OBBLIGO UTILIZZARE IL TIPO DI DATO CORRETTO PER IL DOMINIO DELL'ATTRIBUTO!!!
detto questo, e personalmente NON SONO d'accordo sulla soluzione che ti propongo (sempre per il motivo di cui sopra), puoi modificare il valore delle colonne con le funzioni di manipolazione delle stringhe, LEN(..), LEFT(…) e SUBSTRING(….)
selezioni tutte le righe che abbiano la colonna DataNascita lunga 8 caratteri, e aggiorni il valore manipolandolo, trivialmente similarmente a
SET NOCOUNT ON;
use tempdb;
GO
CREATE TABLE dbo.Test (
Id int IDENTITY,
Nome varchar(10),
DataNascita varchar(10)
);
GO
INSERT dbo.Test
VALUES ('a', '05/07/1990' ), ( 'b', '06/07/85');
SELECT *
FROM dbo.Test t;
PRINT 'Proiezione';
SELECT t.Id, t.Nome, t.DataNascita
, CASE WHEN LEN(t.DataNascita) = 8
THEN LEFT(t.DataNascita, 6) + '19' + SUBSTRING(t.DataNascita, 7, 2)
ELSE t.DataNascita
END AS Formattata
FROM dbo.Test t;
PRINT 'modifica dati in tabella';
UPDATE dbo.Test
SET DataNascita = CASE WHEN LEN(DataNascita) = 10 then DataNascita
ELSE LEFT(DataNascita, 6) + '19' + SUBSTRING(DataNascita, 7, 2)
END
WHERE LEN(DataNascita) = 8;
PRINT 'Proiezione';
SELECT *
FROM dbo.Test t;
GO
DROP TABLE dbo.Test;
--<-----------
Id Nome DataNascita
----------- ---------- -----------
1 a 05/07/1990
2 b 06/07/85
Proiezione
Id Nome DataNascita Formattata
----------- ---------- ----------- ----------
1 a 05/07/1990 05/07/1990
2 b 06/07/85 06/07/1985
modifica dati in tabella
Proiezione
Id Nome DataNascita
----------- ---------- -----------
1 a 05/07/1990
2 b 06/07/1985
salutoni romagnoli
–
Andrea