Date e sql.. le prende nel formato che vuole!

sabato 22 marzo 2008 - 17.28

EmaGuzzetti Profilo | Junior Member

salve a tutti.. io sto facendo una pagina asp.net collegata ad un db di access.
all'interno del database io ho bisogno di scrivere delle date. allora uso la funzione insert into cosi:
"INSERT INTO pren (data) VALUES (#" & data.ToString & "#);"
ma quando vado a guardare nel db la data che mi ha inserito a lposto di essere per esempio 3/11/1989 è 11/3/1989.
e se invece vado poi a prelevare i dati inseriti con un dataset la data ottenuta è quella originale e giusta che avevo inserito.. cioè 3/11/1989.. quale può essere il problema?
scusate ma l'ho postato per sbaglio 2 volte..

alx_81 Profilo | Guru

>salve a tutti..
Ciao!

>io sto facendo una pagina asp.net collegata ad un db di access.
>all'interno del database io ho bisogno di scrivere delle date.
>allora uso la funzione insert into cosi:
>"INSERT INTO pren (data) VALUES (#" & data.ToString & "#);"
>ma quando vado a guardare nel db la data che mi ha inserito a
>lposto di essere per esempio 3/11/1989 è 11/3/1989.
>e se invece vado poi a prelevare i dati inseriti con un dataset
>la data ottenuta è quella originale e giusta che avevo inserito..
>cioè 3/11/1989.. quale può essere il problema?
Il problema è che stai passando una data formattata in base a quelle che sono le tue impostazioni. E non è detto che queste siano in accordo con la tua installazione di ACCESS. Infatti tu le inserisci probabilmente in un formato italiano e access le interpreta come se fossero inglesi e inverte giorno e mese.
Se provi ad inserire una data il cui giorno supera il 12, dovresti ottenere un errore di conversione.
Di conseguenza è buona norma scrivere le date in formato ISO, come segue:
YYYYMMDD HH:mm:ss.nnn

e quindi ad esempio:

20080322 17:35:00

Ricorda che puoi inoltre omettere l'orario e questo in automatico viene valorizzato alla mezzanotte.

Ciao!
Alx81 =)

http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

EmaGuzzetti Profilo | Junior Member

ho già provato a mettere l'orario come dici tu.. ma stavolta quando vado a prelevare la data dal dataset me la ritrovo sbagliata! cioè se voglio scrivere 3/11/1989 nella query scrivo 11/3/1989, e nel database risulta giusto, ma quando vado a leggerla dal dataset me la ritrovo 11/3/1989!!

alx_81 Profilo | Guru

>ho già provato a mettere l'orario come dici tu.. ma stavolta
>quando vado a prelevare la data dal dataset me la ritrovo sbagliata!
>cioè se voglio scrivere 3/11/1989 nella query scrivo 11/3/1989,
>e nel database risulta giusto, ma quando vado a leggerla dal
>dataset me la ritrovo 11/3/1989!!
Allora.. per la scrittura utilizza sempre e comunque ISO così eviti problemi di localizzazione.
Se però il tuo problema sta anche nella lettura, e quindi ad esempio, in una visualizzazione, devi agire sulla formattazione, ad esempio:
Dim dt As DateTime = DateTime.Now MessageBox.Show(dt.ToString("dd/MM/yyyy"))


Alx81 =)

http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
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