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

    date con (e senza) l'anno

    Mi servirebbe salvare in un DB Mysql date di due tipi:
    sia date classiche con l'indicazione dell'anno, ad esempio 25/04/1945
    sia date con solo l'indicazione di giorno e mese 25/04.

    Avete qualche consiglio su come effettuare in modo "intelligente" la cosa?

    Vi ringrazio.

  2. #2

    Re: date con (e senza) l'anno

    Originariamente inviato da tsunamin
    Mi servirebbe salvare in un DB Mysql date di due tipi:
    sia date classiche con l'indicazione dell'anno, ad esempio 25/04/1945
    sia date con solo l'indicazione di giorno e mese 25/04.

    Avete qualche consiglio su come effettuare in modo "intelligente" la cosa?

    Vi ringrazio.
    fai un campo in formato DATE e metti la data nel formato previsto e cioe' 2006-06-29 cosi' potrai sfruttare le miriadi di funzioni sulle date disponibili su mysql.

    Quando dovrai visualizzare lo farai con DATE_FORMAT() e farai vedere quello che ti pare.

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

  3. #3
    in base all'indicazioni date dal manuale di MySQL, sembrerebbe che una possibile via sia salvare l'anno come 0000 per quelle date dove manca l'anno.

    Cosa ne pensate?
    grazie.

  4. #4

    Re: Re: date con (e senza) l'anno

    Originariamente inviato da piero.mac
    fai un campo in formato DATE e metti la data nel formato previsto e cioe' 2006-06-29 cosi' potrai sfruttare le miriadi di funzioni sulle date disponibili su mysql.

    Quando dovrai visualizzare lo farai con DATE_FORMAT() e farai vedere quello che ti pare.
    Sì però io devo poter salvare in modo "esplicito" sia date con l'anno indicato, sia date senza aver indicato l'anno.

    Un'idea sarebbe di usare 0000 come anno, per le date senza anno indicato.
    L'altra idea sarebbe di usare un anno a caso, e aggiunga una colonna boolean true/false per dire se l'anno esiste o meno.

    Infine.. e uno mi inserisce 29/02 senza anno, lo devo prendere per buono, invece se uno mi mette 29/02/1999, il db lo deve prendere solo se quell'anno è bisestile

  5. #5
    la data la devi normalizzare tu. Un giorno/mese senza anno e' come un nome senza cognome. Quindi se la data e' mancante dell'anno dovresti assumere l'anno come quello corrente. Poi bisogna vedere a che serve ed il perche' della scelta.

    Puoi memorizzare tutto come ti pare in un campo VARCHAR() ma poi non sara' una data, ma bensi' una stringa qualunque e come tale andra' trattata.

    In altre parole... tu puoi permettere, volendo, che la gente immetta ogni minchiola buffa, ma tu poi la minchiola la devi normalizzare in una data canonica.

    Sempre bello vedere nel form per la data una select in cui pescare giorno, mese, anno e cosi' gli errori sono tutti evitati.

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

  6. #6
    Originariamente inviato da piero.mac
    la data la devi normalizzare tu. Un giorno/mese senza anno e' come un nome senza cognome. Quindi se la data e' mancante dell'anno dovresti assumere l'anno come quello corrente. Poi bisogna vedere a che serve ed il perche' della scelta.

    Puoi memorizzare tutto come ti pare in un campo VARCHAR() ma poi non sara' una data, ma bensi' una stringa qualunque e come tale andra' trattata.

    In altre parole... tu puoi permettere, volendo, che la gente immetta ogni minchiola buffa, ma tu poi la minchiola la devi normalizzare in una data canonica.

    Sempre bello vedere nel form per la data una select in cui pescare giorno, mese, anno e cosi' gli errori sono tutti evitati.
    per ora ho risolto così:

    per date senza specifico anno associato, ad esempio san valentino, nel db metto 0000-02-14
    per date con specifico anno, procedo normalmente, esempio attacco twin towers 2001-09-11

  7. #7
    se usi il formato DATE il range di validita' per anno e' da 1000 a 9999.

    se hai voglia di leggere .... http://forum.html.it/forum/showthrea...hreadid=459634

    personalmente uso 9999 per le date dove l'anno non deve essere significativo.


    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.