Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18

Discussione: compleanno

  1. #1

    compleanno

    in un db una colonna è dedicata alla data di nascita in formato

    aaaa-mm-gg

    vorrei fare in modo che se mm-gg della data di nascita == mm-gg odierni lo consideri compleanno e magari calcolare anche gli anni della persona

    per esempio utente: pippo (1906-02-15)

    Oggi è il compleanno di: pippo (100 anni)

    si può fare? se si, come?

  2. #2
    cerca i record che corrispondono a mese e giorno con oggi, Calcoli la differenza degli anni e sei a posto.
    codice:
    SELECT *,
    YEAR(NOW()) - YEAR(campo_data) as eta
    FROM tabella
    WHERE DATE_FORMAT(campo_data, '%m%d') = DATE_FORMAT(NOW(), '%m%d')
    quelli nati il 29 febbraio li beccherai solo una volta ogni 4 anni...

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

  3. #3
    Grandissima idea! Grazie, serviva anche a me
    ...::: DESIDERARE E' UMANO :::...
    ...::: POSSEDERE E' DIVINO :::...
    ...::: HAVE A NICE DAY :::...
    (¯`·.¸¸.->ĐĮ ĦΞŁŁ<-.¸¸.·`¯)
    http://www.djhellclub.com

  4. #4
    grazie mille

    e per selezionare, ad esempio, tutti i compleanni nei prossimi 30 gg?

    cioè dire

    NICK - DATA COMPLEANNO - ANNI

    pippo - 17-02-2006 - 35
    pippa - 25-02-2006 - 15
    pippi - 12-03-2006 - 125

  5. #5
    Originariamente inviato da Queer
    e per selezionare, ad esempio, tutti i compleanni nei prossimi 30 gg?
    cioè dire

    NICK - DATA COMPLEANNO - ANNI

    pippo - 17-02-2006 - 35
    pippa - 25-02-2006 - 15
    pippi - 12-03-2006 - 125
    intanto la data deve essere nel formato come prima e non quest'ultimo ....

    usa between nel where....
    codice:
    SELECT nick, DATE_FORMAT(data, '%d-%m-%Y') as data_compleanno,
    YEAR(NOW()) - YEAR(data) as eta
    FROM tabella
    WHERE DATE_FORMAT(data, '%m%d') BETWEEN 
          DATE_FORMAT(NOW(), '%m%d') AND 
          DATE_FORMAT(NOW() + interval 30 day, '%m%d')
    ORDER BY data

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

  6. #6
    grazie ancora

    una ultimissima cosa

    ho fatto, come mi hai detto te

    SELECT nickname, DATE_FORMAT(data_nascita, '%d-%m-%Y') as data_compleanno,
    YEAR(NOW()) - YEAR(data_nascita) as eta
    FROM membri
    WHERE DATE_FORMAT(data_nascita, '%m%d') BETWEEN
    DATE_FORMAT(NOW(), '%m%d') AND
    DATE_FORMAT(NOW() + interval 30 day, '%m%d')
    ORDER BY data_compleanno asc

    solo che me li ordina in base al giorno asc, e il mese asc

    così mi viene fuori

    02-03-1925
    14-03-1965
    25-02-1999

    ecc ecc

    come posso fare perchè me li idicizzi prima per mese asc e poi per giorno asc?

  7. #7
    non sei stato attento... non ho messo l'alias del campo come ordinamento, ma il campo data originale.


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

  8. #8
    ok... vero...
    grazie

  9. #9
    cmq l'ordinamento nn è esatto... se metto order by data_nascita me lo ordina per il valore degli anni, non per intervallo di tempo tra oggi e il compleanno

  10. #10
    Originariamente inviato da Queer
    cmq l'ordinamento nn è esatto... se metto order by data_nascita me lo ordina per il valore degli anni, non per intervallo di tempo tra oggi e il compleanno
    ohhh mamma....

    e tu fai l'ordinamento per mese-giorno.... come fare ormai lo dovresti sapere.....

    ORDER BY date_format(data, '%m%d') ASC...

    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.