Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Formato data su Access

735 views
Skip to first unread message

a.cinelli

unread,
Sep 23, 2002, 3:37:46 AM9/23/02
to
Buongiorno a tutti, il mio problema e' con un db Access e
il formato data.
Mi spiego: devo inserire dei dati nel mio db, tra cui due
date.
Quando faccio l'execute di questa stringa sql :
"INSERT INTO tabella VALUES ('1', 1, 0, 1, #13/04/2000#,
#02/04/2000#, 1)", la prima data viene salvata
correttamente, ma la seconda diventa magicamente
04/02/2000.
Qualcuno sa spiegarmi perche'?

Maurizio Borrelli

unread,
Sep 23, 2002, 4:05:25 AM9/23/02
to
> "a.cinelli" [...]:

Perche' devi usare il formato data americano: mese giorno anno.

La "magia" di cui parli e' meglio definibile come "eccesso di zelo" che,
come sai, non e' una virtu'.

--
Ciao :-)
Maurizio
--------
?SPQR(C)
X
--------


Ivan

unread,
Sep 23, 2002, 5:24:26 AM9/23/02
to
Anche io avevo affrontato questo problema..
Lo risolto inserendo tutte le date in formato americano e
non in italiano.
Se noti nell'sempio riportato sotto inverte il mese e
l'anno Xche lui le vede come date amricane.
La cosa che di solito manda in confusione è la data in
formato italiano con più di 12 giorni es 24/03/2002 che il
sistema inserisce ma la riconosce come italiana e la
inserisce giusta...ma poi alle date 02/08/02 (ita) le
inverte applicando la regola americana.


CiaoX


Ivan

>-----Messaggio originale---


>> Perche' devi usare il formato data americano: mese
>giorno anno.
>

>Il problema non si risolve:
>io voglio salvare 02 agosto 2000
>se scrivo 02/08/2000 (formato ita) immette 08/02/2000
>se scrivo 08/02/2000 (formato eng) immette 02/08/2000
>
>
>
>.
>

Maurizio Borrelli

unread,
Sep 23, 2002, 6:06:47 AM9/23/02
to
> "a.cinelli" [...]:

> > Perche' devi usare il formato data americano: mese
> > giorno anno.
> Il problema non si risolve:
> io voglio salvare 02 agosto 2000
> se scrivo 02/08/2000 (formato ita) immette 08/02/2000
> se scrivo 08/02/2000 (formato eng) immette 02/08/2000

Se scrivi... dove? Con Access ti devi porre anche questo problema.
Esattamente dove la scrivi questa stringa?

Ricordati anche che, per tagliare la testa al toro e non avere piu' mal
di testa (almeno il toro), puoi sempre passare la data in formato YYYYMMDD.

a.cinelli

unread,
Sep 23, 2002, 6:14:38 AM9/23/02
to

>Anche io avevo affrontato questo problema..

Dovremmo farlo presente a Microsoft...

>Lo risolto inserendo tutte le date in formato americano e
>non in italiano.
>Se noti nell'sempio riportato sotto inverte il mese e
>l'anno Xche lui le vede come date amricane.
>La cosa che di solito manda in confusione è la data in
>formato italiano con più di 12 giorni es 24/03/2002 che il
>sistema inserisce ma la riconosce come italiana e la
>inserisce giusta...ma poi alle date 02/08/02 (ita) le
>inverte applicando la regola americana.

Ok. ma quello che mi lascia perplesso e':
come faccio a fargli capire che gli passo una data in
formato americano e non la deve convertire?

Ho scoperto cmq che dipende dalle impostazioni
internazionali del pannello di controllo
ho settato le impost. Inglese(Stati Uniti)
il problema e' inverso ma in sostanza non cambia
L'unica e' salvarlo come stringa, ma in qs caso il formato
deve essere aaaa/mm/gg, per poi fare i relativi calcoli

Ciao
-ago

a.cinelli

unread,
Sep 23, 2002, 6:37:11 AM9/23/02
to

> Se scrivi... dove? Con Access ti devi porre anche
questo problema.
>Esattamente dove la scrivi questa stringa?

Ho una istruzione sql INSERT da ASP/ADO

> Ricordati anche che, per tagliare la testa al toro e
non avere piu' mal
>di testa (almeno il toro), puoi sempre passare la data in
formato YYYYMMDD.

Non ci avevo pensato a passare questo formato come data
(pensavo a passargli la stringa, come ho risposto a Ivan)

Grazie!
-ago

a.cinelli

unread,
Sep 23, 2002, 7:02:36 AM9/23/02
to
>Non ci avevo pensato a passare questo formato come data
>(pensavo a passargli la stringa, come ho risposto a Ivan)

Niente da fare...
Adesso l'INSERT funziona bene, ma il SELECT no.
il 02/08/2000 :
- in Access me lo visualizza 02/08/2000,
- nella pagina ASP (rs.Fields.Item("data_inizio").Value)
lo visualizza 02/08/2000
- nel SELECT ... WHERE data_inizio = #02/08/2000# non lo
trova
- nel SELECT ... WHERE data_inizio = #08/02/2000# lo trova

-ago/mistero

Ivan

unread,
Sep 23, 2002, 7:17:19 AM9/23/02
to
Lui si aspetta sempre la data in americano...ma quando vede
arrivare altre date prova a forzarle in modo da farle entrare.
In realtà non è un vero problema l'importante e sapere come
lavora l'access, una volta imparato tutto sarà più facile...
Se cominci in ogni query a ragionare in americano vedrai
che poi torna tutto.

ciaoX


p.s: In visualizzazione poi dovrai riconvertire le date.


>-----Messaggio originale---

>.
>

Maurizio Borrelli

unread,
Sep 23, 2002, 8:05:18 AM9/23/02
to
> "a.cinelli" [...]:

> > Se scrivi... dove? Con Access ti devi porre anche
> > questo problema.
> >Esattamente dove la scrivi questa stringa?
> Ho una istruzione sql INSERT da ASP/ADO

Scusa sai, ma "esattamente" vuol dire qualcosa di piu'. ;-)

a.cinelli

unread,
Sep 24, 2002, 2:48:03 AM9/24/02
to

>>> Esattamente dove la scrivi questa stringa?
>> Ho una istruzione sql INSERT da ASP/ADO
> Scusa sai, ma "esattamente" vuol dire qualcosa di
piu'. ;-)

In realta' esattamente vuol dire _molto_ di piu', il SO e
le impostazioni internazionali, la versione di Access, di
ADO, di ASP, di SQL... dovrei fare un megapost

Cmq adesso funziona tutto, ho usato il formato aaaa/mm/gg
per il db e il formato italiano per la visualizzazione...

Grazie del tuo aiuto!
ciao
-ago

a.cinelli

unread,
Sep 24, 2002, 2:51:39 AM9/24/02
to

>Se cominci in ogni query a ragionare in americano vedrai
>che poi torna tutto.

Il formato aaaa/mm/gg e' migliore, nn c'e' davvero
pericolo (spero, almeno) che converta in modo strano la
data...

>p.s: In visualizzazione poi dovrai riconvertire le date.

e va beh, un'istruzione in piu' nn cambia la vita ;-)

Grazie ancora!
ciao
-ago

BEnrico

unread,
Oct 3, 2002, 11:12:30 AM10/3/02
to
Io ho questo problema:

Sto facendo dei test con IIS, ASP ed SQL Server.

I regional settings sono English United Kingdom (per via della data) ma con
Input Locale US (per via della tastiera)

La cosa che mi sconvolge e' che da ASP (update) sono costretto a mettere la
data in mm/dd/yyyy, ma leggendo (select) mi ritorna in dd/mm/yyyy.

Inoltre, con l'Enterprise Manager se in tabella scrivo la data 20/10/2002 e'
ok, se invece scrivo 10/20/2002 si accorge dell'errore e me la corregge in
20/10/2002 !!!!!!!!!

Secondo me e' scandaloso che non si possa obbligare SQL server a forzare
l'accettazione in uno ed un solo formato dipendente magari dai settaggi del
client.

Luca Bianchi

unread,
Oct 4, 2002, 3:18:58 AM10/4/02
to

"BEnrico" <enrico...@libero.it> wrote in message
news:anhmte$e7tuu$1...@ID-130040.news.dfncis.de...

Sarebbe scandaloso si... Ma per fortuna il comando ce l'hai.

SET DATEFORMAT formato

in cui puoi indicare, dal lato client, in quale formato saranno inviate al
server le date.

Se esegui le istruzioni

SET DATEFORMAT mdy
INSERT MyTable VALUES('01/10/2002')

Inserirai nella tabella la data 10 gennaio mentre con

SET DATEFORMAT dmy
INSERT MyTable VALUES('01/10/2002')

la data inserita sarà quella del 1 ottobre.

Ciao


Luca Bianchi


0 new messages