Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [mysql] problema con le date

    Salve ragazzi ho un problema con le date.


    In una tabella di nome cliente ho due campi di nome arrivo e partenza, se faccio una select:

    mysql> select arrivo,partenza from cliente ;
    +------------+------------+
    | arrivo | partenza |
    +------------+------------+
    | 2008-06-08 | 2008-06-08 |
    | 2008-06-10 | 2008-06-15 |
    +------------+------------+
    2 rows in set (0.00 sec)


    da questa tabella se voglio sapere se tra il 9 giugno ed il 15 giugno e arrivato un cliente faccio così:

    mysql> select arrivo,partenza from cliente where between '2008-06-09' and '2008-06-15' ;
    +------------+------------+
    | arrivo | partenza |
    +------------+------------+
    | 2008-06-10 | 2008-06-15 |
    +------------+------------+
    1 rows in set (0.00 sec)

    il problema sorge quando voglio vedere se tra 11 ed il 13 giugno c'è qualcuno, questo è un problema perchè queste due date non sono memorizzate da nessuna parte, servirebbe un qualcosa che estraesse tutte le date comprese tra due date
    Agos

  2. #2
    Per estrarre tutti i record che comprendono almeno un giorno tra il range che proponi puoi usare una query come questa:

    ('2008-06-11' BETWEEN arrivo AND partenza) or ('2008-06-13' BETWEEN arrivo AND partenza) or (('2008-06-11' < arrivo) AND ('2008-06-13' > partenza))

  3. #3
    perfetto grazie
    Agos

  4. #4
    Scusa ma mi sono accorto di un piccolo problema adesso vi spiego meglio

    sto sviluppando un software in java di prenotazione stanze

    il software visualizza un pannello con trenta stanze e due date arrivo e partenza inserendo arrivo e partenza in questo pannello mi visualizzo tutte le stanze libere in quelle date come mi hai spiegato tu

    esempio
    select numstanza from cliente where ('2008-06-14' BETWEEN arrivo AND partenza) or ('2008-06-15' BETWEEN arrivo AND partenza) or (('2008-06-14' < arrivo) AND ('2008-06-15' > partenza))


    con questa istruzione quindi mi ricavo le stanze occupate.
    data di arrivo del pannello '2008-06-14'
    data di partenza del pannello '2008-06-15'


    Adesso se cambio data e in data di arrivo inserisco '2008-06-15' e in data di partenza '2008-06-16' l'istruzione mi ritorna anche la stanza con data di partenza il '2008-06-15'

    come posso escludere dalla ricerca la data di partenza?
    Agos

  5. #5

  6. #6
    scusami ma non ho capito bene

    ('2008-06-14' > arrivo AND partenza) or ('2008-06-15' < arrivo AND partenza) or (('2008-06-14' < arrivo) AND ('2008-06-15' > partenza))

    oppure

    ('2008-06-14' < arrivo AND partenza) or ('2008-06-15' > arrivo AND partenza) or (('2008-06-14' < arrivo) AND ('2008-06-15' > partenza))


    non funziona con nessuna delle 2
    Agos

  7. #7
    Ti suggerisco di rileggere quanto suggerito e la pagina del manuale ufficiale relativa a BETWEEN:

    http://dev.mysql.com/doc/refman/5.0/...erator_between

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.