PDA

Visualizza la versione completa : [SQL SERVER 2005] Migrazione database e problema con date


MrRam
02-04-2007, 13:06
ciao, ho un grosso problema.

devo migrare il mio database sql.
per fare ci ho creato dei file insert dove ho quindi una serie di righe:

INSERT INTO Accessi
(id,idutente,codicefiscale,nome,cognome,clearance, datasistema)
VALUES(2543,1,'webmaster','Marco','Lombardo',9,'01/04/2007 15.13.00');

In precedenza sul nuovo database ho creato la tabella vuota.
Il problema ce l'ho sull'ultimo campo, quello "datasistema" che in origine come vedete popolato con campi del tipo '01/04/2007 15.13.00', contenuti in un campo SMALLDATETIME.

Quando eseguo l'insert, mi esce l'errore:

The conversion of a char data type to a smalldatetime data type resulted in an out-of-range datetime value.

Ho provato anche a covertire in datetime, ma l'errore il medesimo.
Funziona solo se converto il campo in nvarchar, ma poi ho dopo un problema a riconvertire il campo in smalldatetime.

Sto impazzendo, qualcuno sa aiutarmi?? :dh:

Grazie tante.

LeleFT
02-04-2007, 14:06
Se specifichi anche di che tipo di DB si tratta, probabilmente qualcuno ti potrebbe dare ulteriori informazioni o segnalarti un modo pi veloce per risolvere il tuo problema.

Oltretutto, il DBMS usato andrebbe specificato anche nel titolo.


Ciao. :ciauz:

MrRam
02-04-2007, 15:09
Il database di origine e di destinazione sempre un SQL2005.

Grazie LeleFT.

MrRam
02-04-2007, 16:08
Niente?
Ci sto sbattendo la testa ma non riesco a venirne fuori ...

Dave83
02-04-2007, 17:17
Ma io le date le inserisco sempre usando la funzione convert datetime

es: CONVERT(DATETIME, 'aaaa-mm-gg hh:mm:ss', 102)
e non ho mai avuto problemi (con campi di timo DateTime per, nel tuo caso prova a sostituire DATETIME con SMALLDATETIME)

Cmq penso che la soluzione sia nell'utilizzare questa funzione... prova a dare un occhiata a questa pagina

http://databases.aspfaq.com/database/what-are-the-valid-styles-for-converting-datetime-to-string.html

MrRam
02-04-2007, 17:38
Non credo di aver capito ... quando devo specificare questa stringa e se va bene inserire CONVERT(DATETIME, 'dd/mm/yyyy hh:mm:ss', 102)

Ho poi notato un altra cosa:
su un altra tabella ho un trigger attivo che inserisce la data corrente.
Prima di fare i numerosi test la data che mi inseriva era 'dd/mm/yyyy hh:mm:ss', adesso esce una roba del tipo Apr 2 etc.etc.
Posso ripristinarla come era prima?

Graziiieee!

MrRam
02-04-2007, 18:44
up up :cry:

MrRam
02-04-2007, 19:09
Comunque per riassumere a beneficio di qualche buon cristiano che mi possa aiutare, il problema adesso il seguente:

Database sql 2005 con tabelle contenenti campi nvarchar(20) nelle quli si trovano stringhe del tipo "31/12/2006 15.30.00".

Il problema che quando le converto in SMALLDATETIME o in DATETIME il sistema mi restituisce un laconico:

Arithmetic overflow error converting expression to data type smalldatetime.

Vi prego se avete qualche suggerimento fatevi avanti.

Grazie, Marco.

:confused:

Dave83
03-04-2007, 09:15
Ah ma tu usi un campo nvarchar(20) nel database!? Questo nn si capiva
Cmq perch non usi direttamente un campo DateTime (cio cambiare il tipo di dato di datasistema), fatto apposta per essere usato ed evitare casini di conversioni ^^

MrRam
03-04-2007, 09:47
Certo Dave, ma il problema proprio quello.
(vedi primo msg) In origine la mia tabella aveva un campo smalldatetime, ma poi quando tento di popolare la tabella su un altro database, mi esce l'errore:

The conversion of a char data type to a smalldatetime data type resulted in an out-of-range datetime value.

L'unico modo per migrare i dati stato quello di creare una tabella con campi nvarchar(20), ma ovviamente poi il mio sito non interpreta i dati come data ...
Provo quindi a convertire il campo ma mi esce sempre:

Arithmetic overflow error converting expression to data type smalldatetime.

E' un casino ... ho le mie stringhe "31/12/2006 15.30.00" ma non riesco a fare la conversione del campo.

:bh:

Loading