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

    Date e Time mysql... o timestamp?

    (Ho appena finito di leggermi la perla)

    Volevo solo un consiglio... grazie a questo forum sbirciando qua e là sono riuscito a completare il 90% della mia tesina...

    ...ora... mi mancano i grafici... ho trovato delle belle librerie.
    Per i punti x e y vogliono un array... vabbè mi arrangerò...

    ... ma perdata e ora come cavolo faccio?
    Nel mio database le avevo definite a loro tempo come date e time...
    ... ho notato che per questo motivo non posso prima di tutto fare confronti del tipo data1 < data2 perchè sono stringhe...

    ... secondo se dovessi per esempio prendere un anno di misurazioni di temperatura (perchè di questo mi sto occupando) e fare le medie dei mesi per visualizzare un punto per ogni mese sul mio grafico, diventerei pazzo perchè non saprei come dividere i tempi...

    ... mentre ho pensato che con timestamp forse tutto sarebbe più facile, tolto il tempo per giorni e mesi divido per 30 o 12....

    ... la mia deduzione è corretta?
    Mi conviene ritrasformarmi tutto il database e modificare il mio codice php oppure mi conviene continuare con 1 colonna date ed una time e porconare una settimana per riuscire a ricavarci un grafico?

    Volevo un consiglio...
    -_-"

  2. #2
    Avrei anche trovato una soluzione on-document per risolvere...

    $start = strtotime(2001-09-12);
    $end = strtotime(2001-10-12);
    $test = strtotime(2001-10-06);

    if($test <= $end $$ $test >= $start) {
    blaaa
    }
    else {
    buuuhhh
    }

    Questo pare essere per confrontare ugualmente delle date tra loro...
    ... ma mi resterebbe il problema dei grafici dev'essere parecchio complicato dividere gli intervalli di tempo...

    Ditemi voi
    -_-"

  3. #3
    Per data e ora esiste pure il formato DATETIME.

    Per quanto riguarda TIMESTAMP e pure il DATETIME e' semplice trovare dove una dataora e' > o < di un'altra.... ma quasi impossibile trovare una data = per via dei secondi.

    In MySQL c'e' una pletora di funzioni, molto piu' ricca che in php, dove puoi calcolare o estrapolare date. L'unica condizione e' appunto il formato del campo. Il TIMESTAMP esiste in due versioni: formato UNIX ed uno AUTOAGGIORNANTE in formato yyyymmddhhmmss visualizzabile con numero variabile ma prefissato di digit.

    In entrambi i casi (UNIX/nonUNIX) si puo' calcolare "quasi" tutto direttamente nella query, evitando tediosi quanto superflui algoritmi in php per ottenere lo stesso risultato.

    Chiaramente non esiste una ricetta buona per tutte le salse. L'algoritmo andra' impostato secondo i bisogni e i dati disponibili. E qui spezzo una lancia per i db.... bisogna inserire i dati con riferimento alle necessita' di estrazione e non in riferimento alla semplicita' di immissione.

    Ciao e auguri per la tua tesina


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

  4. #4
    Alla fine ho deciso di arrangiarmi con un date ed un time.

    Per fare i grafici ignorerò il time (tranne che nel grafico del giorno).

    Siccome SO GIA' che non ci arriverò mai nemmeno tra 1000 anni.
    Per scegliere un perido sto aggiungendo alla query questa where:

    $opzioni ="WHERE Data <= '".$AData."' AND Data >= '".$DaData."'";

    Se volessi aggiungere l'ora come dovrei fare?

    Ci sono arrivato da solo al fatto che non è una AND... perchè se così fosse restringerei il periodo dei giorni, al periodo dei giorni le quali misurazioni cadono nell'intervallo di tempo in ore...
    Cioè non quello che voglio...

    io vorrei partire da un certo giorno-ora ad un altro.

    Qualcuno ha già risolto questo problema?
    -_-"

  5. #5
    esiste anche l'istruzione:

    BETWEEN min AND max

    WHERE Data BETWEEN '$DaData' AND '$AData'
    AND ora BETWEEN '$Daora' AND '$Aora'


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

  6. #6
    Ho riletto...
    io vorrei partire da un certo giorno-ora ad un altro.
    se intendi dire da un certo giorno/ora ad altro giorno/ora.... Allora

    WHERE CONCAT(data,' ',ora)
    BETWEEN '2003-01-01 00:00:00'
    AND '2003-12-31 23:59:59'


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

  7. #7
    1000 grazie adesso lo provo

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.