Eseguendo questa query in phpMyAdmin ottengo un risultato di tipo NULL:
Qualcuno saprebbe spiegarmi come mai?codice:SELECT SUM(total_due_reoccur) FROM hosting_order WHERE (domain_expire >= '03/14/2005' AND domain_expire <= '03/14/2006')
Eseguendo questa query in phpMyAdmin ottengo un risultato di tipo NULL:
Qualcuno saprebbe spiegarmi come mai?codice:SELECT SUM(total_due_reoccur) FROM hosting_order WHERE (domain_expire >= '03/14/2005' AND domain_expire <= '03/14/2006')
~ linux power never ends ~
Per il formato della data. Mysql utilizza il formato yyyy-mm-dd
l'ordinamento avviene con il valore piu' significativo a sx ed il meno significativo a dx. Proprio come con i valori numerici.
![]()
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
Nel mio database la data è espressa come un varchar di 10 caratteri di tipo mm/dd/yyyy quindi sono dichiarati così come nella query...![]()
~ linux power never ends ~
Perfetto quindi la comparazione dei campi mysql la fa secondo il codice ascii. Pero' mi devi spiegare come fa una stringa ad essere superiore ad un altra oppure tra uno e l'altro se non e' un valore numerico o una data.[supersaibal]Originariamente inviato da Hellsing
Nel mio database la data è espressa come un varchar di 10 caratteri di tipo mm/dd/yyyy quindi sono dichiarati così come nella query...[/supersaibal]
Che tu la esprimi a modo tuo, e mysql la valuti a modo suo e' pure un'altro dato di fatto.
Se hai mysql 4.1.x potresti provare con la funzione str_to_date() a convertire la stringa in data.
In altre parole... non conta quello che credi tu, ma quello a cui mysql e' istruito a fare.
![]()
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
Nel mio script chiaramente trasformo la data in formato date... il problema è che non funziona ugualmente...non riesce a fare la selezione su un range di un anno![]()
~ linux power never ends ~
Purtroppo il database non l'ho ne progettato ne inmplementato io...devo operarvici sopra... quindi capisci il mio disagio...![]()
~ linux power never ends ~
Devi fare un cast:
CAST(data AS DATE) dove data è nel formato yyyy-mm-dd. Per averla in quel formato usa SUBSTRING.
Il casting lo fa per conto suo. Deve convertire la data nel formato appropriato oppure scomporla in anno, mese, giorno e comparare singolarmente i tre valori. Mysql riconosce la data anche se in un campo varchar, purche' sia nel formato previsto, anche con divisori diversi. Quindi il casting e' automatico.[supersaibal]Originariamente inviato da Teuzzo
Devi fare un cast:
CAST(data AS DATE) dove data è nel formato yyyy-mm-dd. Per averla in quel formato usa SUBSTRING. [/supersaibal]
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
Ho eseguito quella query con intervalli compresi tra la data odierna e il 03/12/2005 e i risultati sono attendibili... se eseguo la query con un range data odierna-03/16/2006 non ho nessun risultato, c'è da dire inoltre che se eseguo la query con 01/01/2006 e 03/16/2006 i risultati sono nuovamente attendibili... mistero o mia incapacità nel problem solving?![]()
...thanx!
![]()
~ linux power never ends ~
Diciamo che non capisci quello che ti abbiamo detto.[supersaibal]Originariamente inviato da Hellsing
Ho eseguito quella query con intervalli compresi tra la data odierna e il 03/12/2005 e i risultati sono attendibili... se eseguo la query con un range data odierna-03/16/2006 non ho nessun risultato, c'è da dire inoltre che se eseguo la query con 01/01/2006 e 03/16/2006 i risultati sono nuovamente attendibili... mistero o mia incapacità nel problem solving?![]()
...thanx!
[/supersaibal]
01/01/2006 viene prima di 02/03/2005. Se fai una comparazione secondo il codice ascii:
01/01/2006
02/03/2005
24/01/2004
e come vedi e' corretto 01 e poi 02 poi 24. La data invece deve essere:
2004/01/24
2005/03/02
2006/01/01
Ora se osservi vedrai che la data 2004 e' minore delle date successive.
quindi per fare un ordinamento di date queste devono essere nel seguente ordine: anno-mese-giorno. Oppure inventi qualcosa per separare i valori e compararli uno ad uno.
![]()
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.