Non so a chi tu stia rispondendo, ma visto che il mio post è l'ultimo prima del tuo penso che sia a me.Originariamente inviato da spetznatz
GRAZIE DEI SPORADICI CONSIGLI, MA QUESTE PICCOLO NOZIONI LE CONOSCO GIA', IL PROBLEMA E' DIVERSO, IO DEVO COMUNICARE AD ACCESS TRAMITE UN'ESPRESSIONE IN UNA QUERY CHE DEVE CALCOLARMI SOLO IL CONTEGGIO DELLE ORE - TRA LE 22:00 E LE 06:00, SOLO QUESTO. Garzie ancora per la vostra preziosa collaborazione.
Tu dici di conoscere già 'queste piccole nozioni', purtroppo il tuo codice:
sembra dimostrare l'esatto contraio.codice:CDate(CDate([alle])-CDate([dalle])-CDate([aliquota_oraria_ridotta]))
Il tuo calcolo sulle date è quanto di più sbagliato si possa fare perchè tratti le Date come fossero Numeri, che invece sono tutt'altra cosa. Infatti queste operazioni sono sbagliate:
?CDate("18:30:21") - CDate("16:30:21")
restituisce: 8,33333333333333E-02
?CDate("22:00:00") - CDate("06:00:00")
restituisce: 0,666666666666667
?CDate("06:00:00") - CDate("22:00:00")
-0,666666666666667
Inoltre, ricorda che le "date" sono un'entità unica che include sempre e comunque DATA e ORA. Una "date" (come comunemente noi la intendiamo) è in realtà un 'evento temporale unico'.
Ad esempio, non esistono in assoluto le ore 22.00, ma le 22.30 del giorno dd/mm/yyyy.
Che tu poi voglia prelevare da questa entità solo una parte dell'una o dell'altra è solo una questione di formattazione, ma il valore reale è sempre DATA e ORA.
Ma eseguire calcoli sulle Date è una cosa un po' più complessa che farlo sui numeri.
In un'interrogazione SQL bisogna anche fare i conti con il formato della data che dei database è di norma internamente definito nel formato americano:
MM/DD/YYYY HH.NN.SS
oppure MM al posto di NN per i minuti:
MM/DD/YYYY HH.MM.SS
a meno ché, non sia stato specificato un formato diverso (ma non tutti i database lo consentono) con i comandi previsti dal database.
Ad esempio, in Access NON è possibile modificare il formato del tipo Data/Ora , per cui in un'interrogazione SQL lo sviluppatore dovrà aver cura di formattare la data nel formato sopra indicato, pena la non corrispondenza dei risultati (leggi: valori sballati).
Non vado oltre perchè immagino conosca già queste problematiche.
Non so che linguaggio stai utilizzando, non sappiamo qual'è la tua query (dato che non l'hai ancora mostrata) ma è certo che di norma è raccomandato l'uso di Command e Parametri che risolvono un bel po' di problemi a monte, oltre che semplificare la vita.
Per darti meglio l'idea sui problemi nella gestione delle Date, puoi dare un'occhiata al mio articolo in cui tratto proprio ques'argomento in maniera abbastanza approfondita.
ADO, Parametri ed affini
http://nuke.vbcorner.net/Articoli/VB...5/Default.aspx
Il progetto di esempio allegato all'articolo è in VB6, ma poco importa; è il concetto che è importante.
![]()