>Infatti, ISO dovresti usarlo solo in lettura, effettuare la conversione
>e poi metterlo in un datatype corretto, come datetime o smalldatetime..
>ed è quello che fai nel tuo esempio Lorenzo..
Eh no.
Tu hai scritto:
> anche se ti consiglio di utilizzare il formato ISO (ssaammgg), così anche se il server non è italiano,
> sei sicura di non ottenere errori.. CAST('20051231' AS DATETIME)
Questo cast che significa? Che cos'è quella stringa '20051231' ? Il valore di una colonna STRINGA?
>per questo indicavo a viviana_77 di convertire in SSAAMMGG il
>suo nvarchar e poi di impostarlo in un datetime..
Non ho capito, spiegati con un esempio.
Comunque, Viviana non ne vieni fuori così facilmente dato che gli errori (eh si sono 2) sono commessi a monte.
Puoi seguire 2 strade (entrambe orrende):
1) impostare per la connessione il formato data italiano oppure cambiare la lingua da inglese ad italiano ed effettuare il cast;
2) parsare la stringa definendo una data in formato ISO YYYYMMDD e poi castarla a datetime o smalldatetime.
USE tempdb;
GO
CREATE TABLE dbo.myTable(
myItalianDate char(10) NOT NULL
);
INSERT dbo.myTable VALUES('12/06/1971');
INSERT dbo.myTable VALUES('01/01/2000');
INSERT dbo.myTable VALUES('31/12/2000');
GO
/* Soluzione 1: Imposto il formato data Italiano cambiano lingua */
SELECT @@LANGUAGE AS Lingua;
/* Output:
Lingua
------------
us_english
(1 row(s) affected)
*/
SET LANGUAGE italiano;
/* Output
L'impostazione della lingua è stata sostituita con Italiano.
*/
SELECT CAST(myItalianDate as smalldatetime) AS Date
FROM dbo.myTable;
/* Output:
Date
-----------------------
1971-06-12 00:00:00
2000-01-01 00:00:00
2000-12-31 00:00:00
(3 row(s) affected)
*/
/* Soluzione 2: parsing */
SELECT
CAST(
RIGHT(myItalianDate, 4) + -- Anno
SUBSTRING(myItalianDate, 4, 2) + -- Mese
LEFT(myItalianDate, 2) -- Giorno
AS smalldatetime) AS Data
FROM dbo.myTable;
/* Output:
Data
-----------------------
1971-06-12 00:00:00
2000-01-01 00:00:00
2000-12-31 00:00:00
(3 row(s) affected)
*/
DROP TABLE dbo.myTable;
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org