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

    [Timestamp]Date inizio e date di fine

    Tramite 2 input faccio inserire grazie ad un js le date nel formato :

    dd/mm/yyyy
    La prima vale come inizio e la seconda come fine .

    Adesso il mio problema è questo :

    Come le faccio ad inserire nel db nel formato corretto ?
    Il campo è di tipo timestamp con predefinito : CURRENT_TIMESTAMP per quella di inizio e 0000-00-00 00:00:00 per quella di fine

    Mi date una idea

  2. #2
    codice:
    $data = '11/06/2005';
    
    list($giorno,$mese,$anno) = explode('/',$data);
    $data_db = "$anno-$mese-$giorno 23:59:59";
    Se devi gestire il tempo a livello di giornate devi tenere presente che l'ora 00:00:00 e' la mezzanotte inizio giornata e quindi la giornata data riferita ti verrebbe esclusa. Se non ti servono le ore meglio gestire DATE invece di DATETIME.

    Stesso discorso per il timestamp.


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

  3. #3
    Originariamente inviato da piero.mac
    codice:
    $data = '11/06/2005';
    
    list($giorno,$mese,$anno) = explode('/',$data);
    $data_db = "$anno-$mese-$giorno 23:59:59";
    Se devi gestire il tempo a livello di giornate devi tenere presente che l'ora 00:00:00 e' la mezzanotte inizio giornata e quindi la giornata data riferita ti verrebbe esclusa. Se non ti servono le ore meglio gestire DATE invece di DATETIME.

    Stesso discorso per il timestamp.

    Si io devo gestire solo esclusivamente i giorni per dire dal 11/06/2005 al 23/07/2005

    Mi dici che è meglio che cambi il tipo di tabella ?

  4. #4
    Ok funziona grazie piero

    E adesso se io devo fare un controllo :

    Oggi è il 11-06-2005

    Se io gli devo far controllare che un evento che ha come data di fine ad esempio il 18-06-2005 lui me lo deve stampare ma se l'evento è gia scaduto lui non me lo deve piu' stampare come potrei fare ???

    Ho pensato ad una cosa di sto tipo :

    $oggi = date("Y-m-d ");
    $datafine = $data->data_fine;

    If($oggi=='$datafine')fai questo
    else{fai questo

    Potrebbe andare ^??

  5. #5
    Originariamente inviato da stefano3804
    Si io devo gestire solo esclusivamente i giorni per dire dal 11/06/2005 al 23/07/2005

    Mi dici che è meglio che cambi il tipo di tabella ?
    Se devi gestire solo giorni e' sicuramente meglio un campo formato DATE. Capisci che, sia UNIX TMESTAMP che MySQL TIMESTAMP, DATETIME tengono conto di ora, minuti e secondi. Quindi se fai una comparazione ne devi sempre tener conto. Se l'ora di immissione fosse stata per es. alle 12:00:00 e tu verificassi adesso che sono le ore 11:33:00 la data non ti verrebbe trovata tra le odierne. Dovresti gestire tu mettendo l'ora a 23:59:59, complicazione assolutamente inutile.

    Il campo formato DATE e l'immissione per INSERT o UPDATE fatta con la funzione NOW() oppure CURDATE() puo' tranquillamente sostituire il campo TIMESTAMP. La data di scadenza la inserisci rivoltando quella fornita dal form come detto prima ma senza hh:mm:ss.

    Sono molti, troppi a mio parere che ritengono UNIX TIMESTAMP buono per tutto ... in realta' se ci sono tanti formati una ragione ci sara' pure. Sono strumenti... se usi quello giusto semplifichi lo script (ottimizzi) ed eviti possibili errori non valutati o valutabili al momento.


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

  6. #6
    Originariamente inviato da piero.mac
    Se devi gestire solo giorni e' sicuramente meglio un campo formato DATE. Capisci che, sia UNIX TMESTAMP che MySQL TIMESTAMP, DATETIME tengono conto di ora, minuti e secondi. Quindi se fai una comparazione ne devi sempre tener conto. Se l'ora di immissione fosse stata per es. alle 12:00:00 e tu verificassi adesso che sono le ore 11:33:00 la data non ti verrebbe trovata tra le odierne. Dovresti gestire tu mettendo l'ora a 23:59:59, complicazione assolutamente inutile.

    Il campo formato DATE e l'immissione per INSERT o UPDATE fatta con la funzione NOW() oppure CURDATE() puo' tranquillamente sostituire il campo TIMESTAMP. La data di scadenza la inserisci rivoltando quella fornita dal form come detto prima ma senza hh:mm:ss.

    Sono molti, troppi a mio parere che ritengono UNIX TIMESTAMP buono per tutto ... in realta' se ci sono tanti formati una ragione ci sara' pure. Sono strumenti... se usi quello giusto semplifichi lo script (ottimizzi) ed eviti possibili errori non valutati o valutabili al momento.

    Grazie dei suggerimenti farò tesoro

    Quello che sto facendo è pianificare le ferie dei ristoranti

  7. #7
    Originariamente inviato da stefano3804
    Ok funziona grazie piero

    E adesso se io devo fare un controllo :

    Oggi è il 11-06-2005

    Se io gli devo far controllare che un evento che ha come data di fine ad esempio il 18-06-2005 lui me lo deve stampare ma se l'evento è gia scaduto lui non me lo deve piu' stampare come potrei fare ???

    Ho pensato ad una cosa di sto tipo :

    $oggi = date("Y-m-d ");
    $datafine = $data->data_fine;

    If($oggi=='$datafine')fai questo
    else{fai questo

    Potrebbe andare ^??
    Se i dati li metti nel database puoi valutare direttamente nella query. Es.:
    codice:
    $scadenza = '2005-07-30';
    
    SELECT * 
    FROM TABELLA
    WHERE data_fine BETWEEN CURDATE() AND $scadenza
    ti estrae tutti i record validi, cioe' quelli con data scadenza compresa tra oggi e 30 luglio.

    Si puo' fare quasi tutto con le query senza disturbare php.

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

  8. #8
    Originariamente inviato da piero.mac
    Se i dati li metti nel database puoi valutare direttamente nella query. Es.:
    codice:
    $scadenza = '2005-07-30';
    
    SELECT * 
    FROM TABELLA
    WHERE data_fine BETWEEN CURDATE() AND $scadenza
    ti estrae tutti i record validi, cioe' quelli con data scadenza compresa tra oggi e 30 luglio.

    Si puo' fare quasi tutto con le query senza disturbare php.
    si ma quando si arriverà al 1 agosto ??? Non lo vedrò piu visualizzato ?

  9. #9
    sto provando a fare come hai detto tu :
    codice:
    SELECT * 
    FROM evento
    WHERE data_fine
    BETWEEN CURDATE( ) 
    AND '2005-06-29'
    LIMIT 0 , 30
    Ho messo come data di scadenza il 30 giugno 2005

    Ma se io cerco una data del 1 agosto lui mi trova un valore (cioè quello che ho inserito) se metto come in questo caso 29 giugno lui non mi trova nulla

    Non capisco il procedimento

  10. #10
    Originariamente inviato da stefano3804
    si ma quando si arriverà al 1 agosto ??? Non lo vedrò piu visualizzato ?
    Il range da visualizzare lo decidi tu in base a quello che ti serve.

    Per esempio l'elenco dei ristoranti chiusi per ferie il giorno 4 agosto? tu nel db hai data_inizio e data_fine ferie?
    codice:
    $giorno = 2005-08-04';
    
    ....
    WHERE $giorno BETWEEN data_inizio AND data_fine
    Sono solo esempi... non esiste la regola buona per qualsiasi cosa. Data una esigenza, si struttura il tipo di dato necessario in modo da ottimizzare l'utilizzo gia' a livello di progetto.

    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.