Newsgroup: it.comp.www.asp
Titolo: Problemi GRAVI con le date

Salve a tutti,
avrei un quesito da porvi: come sarebbe possibile, tramite una query tipo
"INSERT INTO TABELLA (Data) VALUES (#" & ValoreData & "#)" non creare errori
di sintassi (del tipo che il server scambia giorno e mese) ???
Lo chiedo perchè, sebbene mi sembri normale che questo avvenga se il valore
della data lo concateno alla stringa sql come stringa stessa, come per
esempio in
"INSERT INTO TABELLA (Data) VALUES (#" & "5/7/99" & "#)"
pensavo ci fosse un modo, diciamo "esteso" per specificare direttamente
data, giorno ed anno separatamente, in modo da non creare confusione. Avevo
pensato anche di specificare la data come per esempio "3 september 1999",
che non dovrebbe creare problemi ma, oltre a sembrarmi poco elegante a
livello di codice (dovendo fare conversioniin testo esteso), credo provochi
problemi se per esempio il server su cui gireranno le pagine sarà italiano
(errori in quanto un server italiano non sa che "september" è in realtà
"settembre").
Oltretutto penso debba x forza esistere un metodo migliore ... cmq grazie a
tutti.

 ha scritto nel messaggio
news:rJ%K4.158678$pn3.1...@news.infostrada.it...


Se provi a leggerti in pò di post precedenti sicuramente troverai mille modi
di affrontare il problema che putroppo ci ha afflitto un pò tutti ...
CMQ
Io ho risolto gestendo le date in formato assoluto ovvero AA/MM/GG effettua
le query con questo formato e tutto inizia a funzionare da solo.
Per ricostruire le tue date usa day(tua_data), month(tua_data) e
year(tua_data) ... ma questo forse era scontato.
Ciao,        Sandro.
P.S.    Fammi sapere !!

> di sintassi (del tipo che il server scambia giorno e mese) ???
Credo che il formato più "standard" e meno problematico sia quello
ISO, cioé:
  yyyy-mm-dd hh:mm:ss
E' lo stesso formato restituito da una query via ODBC (perlomeno se il
datasource è un file Access).  Con esso si unificano date e ore in un
unico tipo datetime (detto anche timestamp).
Facendo un INSERT o un UPDATE la parte hh:mm:ss è facoltativa:
  INSERT into miatabella (data_ora, nome, cognome)
    values ({d '2000-04-24'}, 'Giulio', 'Cesare')
(tra l'altro #...# è obsoleto, meglio {d '...'})
Questo formato ha una simpatica proprietà: l'ordinamento alfabetico
delle stringhe equivale all'ordinamento delle date corrispondenti.
--
----------------------------------------------------------------------
Marco Coletti
Network Admin, Webmaster, Tuttologo :)
PGP public key:
http://keys.pgp.com:11371/pks/lookup?op=get&exact=on&search=0x96A79061
Fingerprint: 9F E5 80 61 F6 9F 05 2D  EA 53 6F 2D 82 8B C7 C2
----------------------------------------------------------------------

 Salve a tutti,
Un consiglio. Leggete bene la documentazione.
Cercate informazioni sulle sequenze di escape di ODBC e OLE-DB.
{ ts 'yyyy-mm-dd hh:mm:ss.cc' }
Saluti.

Grazie mille, funziona.
Una cosa soltanto: il fatto che in questo formato (intendo dire {d '...'})
ci sia un ordinamento preciso ed unico, ovvero ANNO-MESE-GIORNO è sicuro,
vero? Non è che l' ordine è questo perché il tuo web server è americano o
cmq particolare? Forse ti sembrerà stupida la conferma, ma il fatto è che,
come penso anche molta altra gente, non vorrei riscrivere alla fine buona
parte del codice perché si viene a sapere che il formato che hai descritto
si localizza.
Scusa la riconferma ma sto portando a termine un lavoro veramente grosso per
una catenai negozi abbastanza estesa e non vorrei tra un paio di mesi
ritrovarmi in mano un codice poco portabile o non robusto a sufficienza.
Cmq grazie.

 ritrovarmi in mano un codice poco portabile o non robusto a sufficienza.
Io per non saper ne' leggere ne' scrivere (le date su Access) ho usato il
formato dd mmm aa (27 apr 00) con il mese (apr) in formato inglese (jan,
feb, mar, apr, may, ecc.)
Saluti.
Stefano.

si localizza.
Quello che ti posso dire è:
avevo il problema inverso: facendo una query via IDC con IIS4 ad un
datasource ODBC corrispondente a un file .mdb Access mi saltava fuori
sempre "2000-04-29 00:00:00" a prescindere da come impostavo le
proprietà internazionali nel pannello di controllo della macchina NT
su cui girava il web server (con i driver ODBC).  Ho dovuto fare un
"SELECT DAY(data_ora) as data_giorno, MONTH(data_ora) as data_mese,
YEAR(data_ora) as data_anno" e riassemblare poi i tre pezzi a mio
piacere.
Dunque mi pare che la regola sia: la data viene restiuita sempre in
formato ISO, ma in fase di immissione il motore SQL riconosce anche
altri formati di data.
