Problema con il tipo datetime

giovedì 14 settembre 2006 - 19.08

bule Profilo | Junior Member

ciao a tutti avrei il seguente problemino...

leggo da un file xml questa stringa: 2006-07-18 12:00:42 come faccio a inserirla in un database sqlserver come tipo dateTime?

grazie a tutti

biggiu Profilo | Junior Member

Ciao,

io proverei cosi' :

rileverei il dato e lo posizionerei su una variabile testo.

a questo punto :

if isdate(mia_variabile_testo) then
campo_DB_SQL = cdate(mia_variabile_testo)
else
campo_DB_SQL = DBnull.value
end if

Spero di esserti stato d'aiuto

Buon Lavoro
BigGiu

lbenaglia Profilo | Guru

>ciao a tutti avrei il seguente problemino...
>
>leggo da un file xml questa stringa: 2006-07-18 12:00:42 come
>faccio a inserirla in un database sqlserver come tipo dateTime?

Ciao bule,

la stringa che proponi è già espressa in un formato che permette un cast implicito a datetime o smalldatetime, pertanto è sufficiente leggere il valore ed eseguire il comando di INSERT.
Esempio:

USE tempdb; GO CREATE TABLE dbo.Dates( DateID int NOT NULL IDENTITY PRIMARY KEY, DateValue datetime NOT NULL ); GO INSERT dbo.Dates VALUES('2006-07-18 12:00:42'); GO SELECT * FROM dbo.Dates; GO /* Output: DateID DateValue ----------- ------------------------ 1 2006-07-18 12:00:42.000 (1 row(s) affected) */ DROP TABLE dbo.Dates;

Se utilizzi SQL Server 2005 puoi servirti delle funzionalità introdotte in questa versione per leggere il file XML, navigarlo tramite XPath ed importarne i dati utilizzando poche righe di codice T-SQL.
Per una trattazione un po' più approfondita ti rimando a questo articolo:

"Leggere un file XML con SQL Server 2005"
http://www.dotnethell.it/articles/XML-SQL-Server-2005.aspx

>grazie a tutti
Prego.

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

bule Profilo | Junior Member

sò che sarebbe bello e probabilmente più giusto e magari più performante far fare il parsing asql server però c'è da dire che ho praticamente appena cominciato e questo mi sembra avanzato..spero però sicuramente di farlo in breve tempo...

attualmente ho fatto così dentro l'applicazione c#:

tempo =reader.ReadString(); // leggo con xmlReader e salvo il valore in una variabile string tempo

e insrisco tempo...sembra che vada tutto ok

ma ..perchè se dentro tempo salvo il valore : 2006-07-18 12:00:42

nel data base viene invece inserito 2006-07-18 12:01:00.000 cioè viene approssimato?

non mi và molto bene questo...

lbenaglia Profilo | Guru

>ma ..perchè se dentro tempo salvo il valore : 2006-07-18 12:00:42
>
>nel data base viene invece inserito 2006-07-18
>12:01:00.000 cioè viene approssimato?

Ah boh, bisogna vedere che combina ADO.NET
Curiosità: non è che il data type della colonna è smalldatetime, VERO?
Ti ricordo che smalldatetime ha una accuratezza al minuto.

Se invece la colonna è definita come datetime, prova a definire un oggetto sqlCommand che richiama una sp parametrica che effettua l'INSERT, utilizzando i data type CORRETTI invece che affidarsi al casting implicito.
Su MSDN trovi tutti i dettagli.

C'è da dire che in T-SQL puro te la caveresti in 2 minuti...

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

bule Profilo | Junior Member

no è prorio dateTime...adesso vedo un pò come risolver questo problema..che la forza sia con me..

grazie mille

bule Profilo | Junior Member

risolto..la colonna del database è effetivamente datetime

ma il parametro della insert era settato come smalldatetime...ora va perfetto

che cul..

lbenaglia Profilo | Guru

>risolto..la colonna del database è effetivamente datetime
>
>ma il parametro della insert era settato come smalldatetime...ora
>va perfetto
>
>che cul..

LOL
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5