142 messaggi dal 06 settembre 2002
Salve a tutti ho un grosso problema,

nella mia pagina ASP eseguo una query con date ma questa ha un comportamento strano! La query è la seguente:

<code>
select * from fattura where scadenza &gt;= #"&datadal&"# and scadenza &lt;= #"&dataal&"# order by scadenza
</code>

dove datadal e dataal sono delle variabili contenenti delle date ricavate da un form.

Quando eseguo la query in alcuni casi funziona regolarmente in altri no:
ad esempio se la scadenza in un record è uguale a 21/11/2001 e le variabili datadal e dataal assumono rispettivamente 12/11/2001 e 23/11/2001 la query non mi restituisce quel record anche se la sua scadenza è compresa tra le due date, invece se cambio la prima data da 12/11/2001 a 11/11/2001 funziona. Praticamente ogni volta che capita un giorno che è l'esatto contrario del giorno del criterio di ricerca non me lo restituisce anche se è compreso tra le due date. Potete darmi una mano?

Grazie,
Isira

4 messaggi dal 20 novembre 2001
Ciao,
se sicura che le date contenute nella tua stringa SQL siano in formato conforme alla lingua del tuo database?

Ad esempio...se usi un database in lingua italiana la data dovrebbe essere in formato italiano, viceversa in formato inglese.

TI mando un esempio della query in Access e SQL Server:

Access:

SELECT data
FROM t_date
WHERE data &gt;= #11/1/2001# and data &lt;= #12/31/2001#
-----------------------------
SQL Server:

SELECT data
FROM t_date
WHERE data &gt;= '11/1/2001' and data &lt;= '12/31/2001'

Ciao
142 messaggi dal 06 settembre 2002
Si ne sono sicura, il formato è quello italiano e il confronto viene eseguito con il formato italiano.

All'inizio pensavo che fosse un problema di Typecasting delle variabili datadal e dataal che risultavano essere di tipo string, ma nonostante io le abbia convertite in tipo date il problema persiste!

Ti viene in mente qualcos'altro al quale potrebbe essere dovuta la cosa?

Ho provato tutto ciò che avevo in mente ma il risultato è sempre lo stesso........
Ho veramente bisogno di risolvere la cosa.

Grazie
Isira

902 messaggi dal 19 aprile 2001
perchè access, INDIPENDENTEMENTE dal formato data del server/mdb la considera in formato americano..
quindi giustamente se tu gli dici 12/11/2001 per lui significa 11 dicembre 2001 e non 12 nov 2001.
Quindi le date VANNO SEMPRE passate in formato americano #mm/gg/aaaa#

 Traspi.net
Da Torino al mondo Internet il magazine di cultura, creatività e informazione.
www.traspi.net
Mauro Tortone
webmaster@traspi.net

Traspi.net
Da Torino al mondo Internet il magazine di cultura, creatività e informazione.
www.traspi.net
Mauro Tortone
webmaster@traspi.net
4 messaggi dal 21 aprile 2001
Mauro non è esatto quello che scrivi. Access passa le date in formato USA solo le queste non posseggono il doppio numero. Posso dirtelo perchè è il mio problema. Quando richiami un record con data 10/12/01 non trovi problemi nella sua esplosione corretta, viceversa lo 01/12-01 viene interpretato come fosse 12/1/01 e (nel mio caso) il motore di ricerca dell'argomento con tale data restituisce una pagina nulla perchè vuota.

Se capirò come far interpretare la data come scritta sempre con doppio numero, avrò risolto il mio e il vostro problema, almeno credo.

mc

mc
902 messaggi dal 19 aprile 2001
hai perfettamente ragione ma, anche se sei in formato italiano e gli passi la data all'ìamericana access la capisce perferttamente.
A questo punto la soluzione è:
scrivi sempre le date in maricano...
fai una funzione che gli passi la data e ti rsponde con una stringa mm/gg/aaaa sfruttando lefunzioni di sistema day moth year...
Chiaro?

 Traspi.net
Da Torino al mondo Internet il magazine di cultura, creatività e informazione.
www.traspi.net
Mauro Tortone
webmaster@traspi.net

Traspi.net
Da Torino al mondo Internet il magazine di cultura, creatività e informazione.
www.traspi.net
Mauro Tortone
webmaster@traspi.net
44 messaggi dal 13 novembre 2001
può essere un problema di formato data perchè anch'io l'ho avuto e l'ho risolto con questa funzione

function convertDatedue (data) {
var arrayData = new Array();
var nuovaData ;
arrayData = data.split ("/");
nuovaData = arrayData[1] + "/"+ arrayData[0] + "/"+ arrayData[2] ;
return nuovaData;
}

che trasforma tutto in formato americano in modo che non ci si può sbagliare.
Comunque nonostante questo continuo ad avere altri problemi simili a isira: se faccio una select dove in where specifico un campo a cui deve corrispondere una data non c'è verso che la faccia giusta mentre se la data deve essere compresa tra due date lo fa giusto...



- D.U.M.B. everyone accusing me!!! -

*Pinhead*

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.