Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    la data di 30 giorni prima

    salve a tutti ,

    in un campo del database inserisco la data odierna in questo formato --- date("Ymd")--- che restituisce questo valore ---20050418--- e fino a qui tutto ok,
    ma il problema per me e' trovare una data per esempio equivalente a 30 giori prima di questa.
    ho visto le pillole ma sinceramente ho le idee confuse .
    esiste una formula semplice cioe' alla mia portata?

    grazie.

  2. #2
    so che quello che sto per fare farà deprimere fortemente i puristi del PHP, comunque tempo fa trovai una funzione open source che è praticamente la versione PHP della funzione "DateAdd" dell'ASP....

    esempio: dateadd('d', -30, $data_odierna);
    dovrebbe restituire la data di 30 giorni fa.

    -----------------------

    function dateadd($interval, $number, $date) {
    $date_time_array = getdate($date);
    $hours = $date_time_array['hours'];
    $minutes = $date_time_array['minutes'];
    $seconds = $date_time_array['seconds'];
    $month = $date_time_array['mon'];
    $day = $date_time_array['mday'];
    $year = $date_time_array['year'];

    switch ($interval) {
    case 'yyyy':
    $year+=$number;
    break;
    case 'q':
    $year+=($number*3);
    break;
    case 'm':
    $month+=$number;
    break;
    case 'y':
    case 'd':
    case 'w':
    $day+=$number;
    break;
    case 'ww':
    $day+=($number*7);
    break;
    case 'h':
    $hours+=$number;
    break;
    case 'n':
    $minutes+=$number;
    break;
    case 's':
    $seconds+=$number;
    break;
    }

    $timestamp = mktime($hours,$minutes,$seconds,$month,$day,$year) ;

    unset($date_time_array);
    unset($hours);
    unset($minutes);
    unset($seconds);
    unset($month);
    unset($day);
    unset($year);

    return $timestamp;
    }

  3. #3
    scusate..... riposto la funzione in forma legibile.....

    Codice PHP:
    function dateadd($interval$number$date) {
        
    $date_time_array getdate($date);
        
    $hours $date_time_array['hours'];
        
    $minutes $date_time_array['minutes'];
        
    $seconds $date_time_array['seconds'];
        
    $month $date_time_array['mon'];
        
    $day $date_time_array['mday'];
        
    $year $date_time_array['year'];
        
        switch (
    $interval) {
            case 
    'yyyy':
                
    $year+=$number;
                break;
            case 
    'q':
                
    $year+=($number*3);
                break;
            case 
    'm':
                
    $month+=$number;
                break;
            case 
    'y':
            case 
    'd':
            case 
    'w':
                
    $day+=$number;
                break;
            case 
    'ww':
                
    $day+=($number*7);
                break;
            case 
    'h':
                
    $hours+=$number;
                break;
            case 
    'n':
                
    $minutes+=$number;
                break;
            case 
    's':
                
    $seconds+=$number;
                break;
        }
        
        
    $timestamp mktime($hours,$minutes,$seconds,$month,$day,$year);
        
        unset(
    $date_time_array);
        unset(
    $hours);
        unset(
    $minutes);
        unset(
    $seconds);
        unset(
    $month);
        unset(
    $day);
        unset(
    $year);
        
        return 
    $timestamp;


  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    525
    Esempio:
    Stabilire se è passata una settimana dalla data in un db
    Con una data in campo frmt DATE (yyyy-mm-dd) e una SELECT:

    SELECT * FROM tabella
    WHERE campo_data + INTERVAL 7 DAY <= NOW()

    cioe', se la data in campo_data + 7 giorni e' minore o uguale alla data di oggi,
    sono passati almeno 7 giorni. Se i giorni devono essere 8 (7 non ancora) togli l'uguale.

  5. #5
    [supersaibal]Originariamente inviato da OhMyGod
    so che quello che sto per fare farà deprimere fortemente i puristi del PHP [/supersaibal]
    Deprime anche i "qualunquisti" di PHP.....

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

  6. #6
    [supersaibal]Originariamente inviato da Simoxxx
    Esempio:
    Stabilire se è passata una settimana dalla data in un db
    Con una data in campo frmt DATE (yyyy-mm-dd) e una SELECT:

    SELECT * FROM tabella
    WHERE campo_data + INTERVAL 7 DAY <= NOW()

    cioe', se la data in campo_data + 7 giorni e' minore o uguale alla data di oggi,
    sono passati almeno 7 giorni. Se i giorni devono essere 8 (7 non ancora) togli l'uguale. [/supersaibal]
    non ho capito se INTERVAL x DAY sono termini propri di sql?.

  7. #7
    [supersaibal]Originariamente inviato da piero.mac
    Deprime anche i "qualunquisti" di PHP..... [/supersaibal]
    non sono un qualunquista, sono semplicemente un principiante.

  8. #8

    Re: la data di 30 giorni prima

    [supersaibal]Originariamente inviato da lorimielome
    salve a tutti ,

    in un campo del database inserisco la data odierna in questo formato --- date("Ymd")--- che restituisce questo valore ---20050418--- e fino a qui tutto ok,
    ma il problema per me e' trovare una data per esempio equivalente a 30 giori prima di questa.
    ho visto le pillole ma sinceramente ho le idee confuse .
    esiste una formula semplice cioe' alla mia portata?

    grazie. [/supersaibal]
    Utilizzando un formato numerico per la data devi utilizzare una funzione che renda solo la data e non l'ora come farebbe invece NOW().

    SELECT * FROM tabella
    WHERE tua_data = curdate() - INTERVAL 30 DAY


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

  9. #9
    [supersaibal]Originariamente inviato da lorimielome
    non sono un qualunquista, sono semplicemente un principiante. [/supersaibal]
    Veramente il depresso qualunquista era il sottoscritto.....

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

  10. #10
    [supersaibal]Originariamente inviato da lorimielome
    non ho capito se INTERVAL x DAY sono termini propri di sql?. [/supersaibal]
    sono funzioni e operatori temporali di MySQL...


    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.