Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    [MySQL] Nessun risultato

    Eseguendo questa query in phpMyAdmin ottengo un risultato di tipo NULL:
    codice:
    SELECT SUM(total_due_reoccur) FROM hosting_order WHERE (domain_expire  >= '03/14/2005' AND domain_expire  <= '03/14/2006')
    Qualcuno saprebbe spiegarmi come mai?
    ~ linux power never ends ~

  2. #2
    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.

  3. #3
    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 ~

  4. #4
    [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]
    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.

    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.

  5. #5
    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 ~

  6. #6

    dimenticavo...

    Purtroppo il database non l'ho ne progettato ne inmplementato io...devo operarvici sopra... quindi capisci il mio disagio...
    ~ linux power never ends ~

  7. #7
    Utente di HTML.it L'avatar di Teuzzo
    Registrato dal
    Mar 2002
    Messaggi
    969
    Devi fare un cast:

    CAST(data AS DATE) dove data è nel formato yyyy-mm-dd. Per averla in quel formato usa SUBSTRING.

  8. #8
    [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 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.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  9. #9
    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 ~

  10. #10
    [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]
    Diciamo che non capisci quello che ti abbiamo detto.

    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.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.