Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    18

    time() timestamp & varchar mysql - Help!

    pensavo di aver capito qualcosa sulle date e invece mi sa di no.

    provo ad illustrarvi il problema:

    mi sono fatto un sistemino un po' rozzo per gestire gli utenti online e pensavo anche di usarlo per contare il numero di accessi di utenti registrati giornaliero.

    non capendoci molto all'inizio ho fatto un po' di casino e alla fine ho deciso per questa strada,
    al login memorizzo in un campo "tempo" (varchar) della tabella "utentionline" il time() di php.

    ora, non essendo un date/time o timestamp ma varchar questa query

    Codice PHP:
    SELECT
        id
    ,
        
    COUNT(utente) AS Utenti 
    FROM
        useronline 
    WHERE
        MONTH
    (tempo) = '$month' AND YEAR(tempo) = '$year'
    GROUP BY
        utente 
    nonne vuole sapere di andare.

    la domanda è la seguente, come faccio a far capire a mysql che deve fare questo tipo di controllo su una stringa che in realtà è il risultato di time() in php?

    grazie come sempre e Buone Feste

  2. #2
    perche' time() rende un formato numerico con la conta dei secondi trascorsi dal 1-1-1970.

    Year() e MONTH() estraggono anno e mese da un formato DATE/DATETIME cioe' yyyy-mm-dd hh:mm:ss e non da un formato unix timestamp.

    dovresti usare FROM_UNIXTIME()
    codice:
    WHERE 
        FROM_UNIXTIME(tempo, '%m') = '$month' AND FROM_UNIXTIME(tempo, '%Y') = '$year'
    trovi info qui: http://forum.html.it/forum/showthrea...hreadid=459634





    @edit ... dimenticavo... siccome il valore del unix timestamp e' numerico sarebbe meglio usare un campo numerico tipo INT(10) UNSIGNED che occupa solo 4 byte con una gestione ottimizzata.

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

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    18
    grandeeee piero! funziona alla grande

    grazie mille

    grazie anche per la dritta dell'ottimizzazione, ma ho il terrore di toccare quella tabella :-)

    posso cambiare live da varchar a int o mi perde tutti i dati?

    P.S. la guida è già tra i miei bookmark l'ho letta tutta due volte ma mi era andato in pappa il cervello con tutta quella roba

  4. #4
    Originariamente inviato da ivox
    posso cambiare live da varchar a int o mi perde tutti i dati?
    Se sono tutti valori numerici puoi cambiare da varchar a int con un alter table.

    In ogni caso come regola generale prima di fare modifiche con il rischio di perdere dei dati si deve eseguire un backup della tabella, poi fai una copia della tabella (anche parziale) e provi su quella. Se la modifica funziona allora la esegui sulla tabella reale e rifai un backup per avere i dati aggiornati mantenendo sempre una copia di backup n-1.

    Eccessivo? forse, almeno fino a quando non scoprirai di avere perso tutti i dati ed allora ringraziera il S. Culone da backup .... (ora pro nobis)....
    .

    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.