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

    [MySQL] Calcolare la stagione di una prenotazione

    Salve ragazzi,

    sto facendo un piccolo sito per un amico che ha una villa che affitta ai turisti. Il sito oltre che sponsorizzare la struttura dovrà dare la possibilità ai visitatori di prenotarla. Il problema che ho è nel calcolo del preventivo, mi spiego:

    Il prezzo della villa varia a seconda della stagione che si intende prenotare:
    bassa stagione: dal 10 Gennaio al 29 Maggio, dal 27 Settembre al 18 Dicembre
    media stagione: dal 30 Maggio al 26 Giugno, dal 30 Agosto al 26 Settembre
    alta stagione: dal 27 Giugno al 29 Agosto, dal 19 Dicembre al 09 Gennaio

    supponiamo che la villa costi: 500€/settimana in bassa stagione, 700€/settimana in media, 1000€/settimana in alta stagione.

    Per gestire le stagioni ed i relativi prezzi (visto che nel corso del tempo potrebbero cambiare) ho creato la tabella "stagioni" così strutturata:
    codice:
    id_stagione (numerico)
    nome (testo)
    prezzo (numerico)
    inizio1 (data)
    fine1 (data)
    inizio2 (data)
    fine2 (data)
    Nel caso della bassa stagione il record sarà:
    codice:
    id_stagione: 1
    nome: bassa
    prezzo: 500,00
    inizio1: 2015-1-10
    fine1: 2015-5-29
    inizio2: 2015-9-27
    fine2: 2015-12-18
    La query che ho scritto per il calcolo della stagione è:
    codice:
    SELECT *
    FROM stagioni
    WHERE 'data_prenotata' BETWEEN inizio1 AND fine1
    OR 'data_prenotata' BETWEEN inizio2 AND fine2
    quindi, supponendo che un visitatore prenoti in data 15 marzo 2015 la query mi ritorna: bassa stagione. Corretto.

    Il problema è per le prenotazioni fatte in vista dell'anno prossimo, per esempio se oggi un visitatore prenotasse per il 15 marzo 2016 la query non troverebbe alcuna stagione in quanto le date salvate sono tutte del 2015.

    Come posso risolvere questo problemino? Esiste qualche funzione o qualche tipo di dato che mi permette di comparare 2 date senza tener conto dell'anno?

    Ho cercato di spiegarmi meglio che potevo, spero che qualcuno possa aiutarmi
    Grazie in anticipo!
    Vincenzo

  2. #2
    month() e day() ti restituiscono mese e giorno di una certa data. cfr il manuale mysql https://dev.mysql.com/doc/refman/5.5...functions.html

    ma se io fossi in te aggiungerei le date anche del 2016, 2017 ecc, per avere il massimo della flessibilità: parliamo di 3-record-3 per anno!

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2013
    Messaggi
    117
    CCiao Vincenzo,
    se fossi in te utilizzerei un calcolo basato sulle settimane dell'anno, anche perché solitamente le prenotazioni delle ferie sono su base settimanale.
    Nella tabella puoi collegare le tariffe al numero della settimana dell'anno e poi usare la funzione WEEK per individuare la tariffa da applicare in base alla data della prenotazione.
    Ciao

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.