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

    [mysql] problema con date

    Ciao a tutti.

    la domanda: come estrarre il numero dei giorni sapendo che siamo in un mese x e anno y:

    Spiego: vorrei conoscere il numero dei giorni di un determinato mese sapendo solamente il numero del mese e l'anno.
    Cioè, se oggi siamo a luglio (mese 07) e anno 2004 dovrebbe rispondermi 31 giorni.

    Cercando tra pillole e commenti non trovo niente.

    La soluzione che mi viene in mente e di cercare l'ultimo giorno del mese (SELECT..LAST_DAY...), effettuare poi una select di differenza tra date e ottenere il risultato.

    Esiste una funzione sql che mi dia il risultato con un solo passaggio?


    Grazie a tutti in anticipo

  2. #2
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    spulciando la pillola di piero.mac sulle date con mySQL nn ho visto niente per avere il numero di giorni di un mese, quindi devi ricorrere a php:

    echo date("t",mktime(0,0,0,7,1,2004));
    think simple think ringo

  3. #3

    Re: [mysql] problema con date

    Originariamente inviato da anastrizz
    Ciao a tutti.

    la domanda: come estrarre il numero dei giorni sapendo che siamo in un mese x e anno y:

    Spiego: vorrei conoscere il numero dei giorni di un determinato mese sapendo solamente il numero del mese e l'anno.
    Cioè, se oggi siamo a luglio (mese 07) e anno 2004 dovrebbe rispondermi 31 giorni.

    Cercando tra pillole e commenti non trovo niente.

    La soluzione che mi viene in mente e di cercare l'ultimo giorno del mese (SELECT..LAST_DAY...), effettuare poi una select di differenza tra date e ottenere il risultato.

    Esiste una funzione sql che mi dia il risultato con un solo passaggio?


    Grazie a tutti in anticipo
    devi fare un giochino... poiche' certa e' la data 01 del mese successivo fai una cosa del genere:

    SELECT
    date_format(date_sub('2004-08-01', interval 1 day),'%d') as giorno

    Lo stesso se vuoi usare php, anzi e' piu semplice:

    $ultimo = date("d", mktime(0,0 ,0,date("m") + 1, 00 ,date("Y")));
    echo $ultimo;

    mktime ti rende l'ultimo del mese precedente se metti 00 come giorno. In questo caso hai il numero dei giorni del mese corrente.


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

  4. #4
    il problema, al dire il vero, si verifica solo per il mese di febbraio che puo avere 28 o 29 giorni (bisestile).

    Ho risolto, semplicemente affrontando il problema da altra angolazione(leggi bastava pensarci), così:
    dato che tutti i mesi ad eccezzione di febbraio, hanno lo stesso numero di giorni, basta controllare se l'anno è bisestile o no:
    anno / 4 = x --> se x è un intero l'anno e bisestile.

    Ciao a tutti e grazie.

  5. #5
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    Originariamente inviato da anastrizz
    ...dato che tutti i mesi ad eccezzione di febbraio, hanno lo stesso numero di giorni...
    non è vero..
    think simple think ringo

  6. #6
    perchè no?

  7. #7
    Originariamente inviato da marketto
    non è vero..
    gia'... mio nonno diceva:

    30 giorni ha novembre
    con april giugno e settembre,
    di ventotto c'e' ne' uno
    tutti gli altri ne han trentuno.

    Ma erano altri tempi....

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

  8. #8
    si, ma erano bei tempi?

    io credo di si.

    Ciao

  9. #9
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    Originariamente inviato da piero.mac
    gia'... mio nonno diceva:

    30 giorni ha novembre
    con april giugno e settembre,
    di ventotto c'e' ne' uno
    tutti gli altri ne han trentuno.

    Ma erano altri tempi....
    confermo
    think simple think ringo

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.