Visualizzazione dei risultati da 1 a 6 su 6

Discussione: date in mysql

  1. #1

    date in mysql

    Mi domandavo se ci fosse un modo di elaborare le date prima di inserirle nel db nel formato d-m-Y H:i:s , avevo provato con date_format ma non riconosceva now() come valore, con str_to_date ma non riconosceva la funzione, quindi chiedo se c'è un modo per farlo senza dover prima inserire la data nel formato americano, poi riprenderla, elaborarla e inserirla aggiornata..
    Social Network in costruzione.. Misto tra Twitter e Facebook.. Twitbook o facetter?

  2. #2

    Re: date in mysql

    Originariamente inviato da 0-c00l
    Mi domandavo se ci fosse un modo di elaborare le date prima di inserirle nel db nel formato d-m-Y H:i:s , avevo provato con date_format ma non riconosceva now() come valore, con str_to_date ma non riconosceva la funzione, quindi chiedo se c'è un modo per farlo senza dover prima inserire la data nel formato americano, poi riprenderla, elaborarla e inserirla aggiornata..
    date_format riconosce now(). str_to_date() esiste dalla versione 4.1 di mysql ma prende una stringa e cerca di trasformarla in data.

    La data nel formato che vorresti e' una stringa e non viene considerata come una data da mysql. Per utilizzare le funzioni per le date in mysql devi averle memorizzate nel formato ansi. Prova a fare una ricerco oppure un ordinamento con una data d-m-Y H:i:s

    Prova con:

    select date_format(now(), '%d-%m-%Y %H:%i:%s') as data

    e te ne potrai convincere che date_format() riconosce now()

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

  3. #3
    Nel database i campi preposti per le date (DATE, DATETIME, etc) richiedono obbligatoriamente il formato corretto e se si prova ad inserire un formato diverso si salveranno una serie di zero oppure date "strane" non corrette.

    le funzione date_format serve in fase di SELECT per farti restituire la data in formato desiderato (che costituisce una stringa).

    la funzione str_to_date è il contrario di date_format: a partire da una stringa si cerca di risalire ad una data nel formato DATETIME, ovvero YYYY-MM-DD hh:mm:ss (funzione alle volte usata in fase di INSERT).

    IN SINTESI:
    nel database le date devono essere inserite nel formato richiesto (ti servirai a seconda dei casi e delle esigenze di NOW, DATE_ADD, DATE_SUB, STR_TO_DATE, etc etc);
    in fase di SELECT tramite la funzione DATE_FORMAT le puoi "trasformare" nel formato desiderato.
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  4. #4
    Originariamente inviato da oly1982
    Nel database i campi preposti per le date (DATE, DATETIME, etc) richiedono obbligatoriamente il formato corretto e se si prova ad inserire un formato diverso si salveranno una serie di zero oppure date "strane" non corrette.

    le funzione date_format serve in fase di SELECT per farti restituire la data in formato desiderato (che costituisce una stringa).

    la funzione str_to_date è il contrario di date_format: a partire da una stringa si cerca di risalire ad una data nel formato DATETIME, ovvero YYYY-MM-DD hh:mm:ss (funzione alle volte usata in fase di INSERT).

    IN SINTESI:
    nel database le date devono essere inserite nel formato richiesto (ti servirai a seconda dei casi e delle esigenze di NOW, DATE_ADD, DATE_SUB, STR_TO_DATE, etc etc);
    in fase di SELECT tramite la funzione DATE_FORMAT le puoi "trasformare" nel formato desiderato.
    Quindi posso fare così per far sì che nel db ci sia la data giusta ?

    Codice PHP:
     mysql_query("INSERTO INTO membri (ultimo_login) VALUES (NOW()") or die (mysql_error());

    $select_data mysql_query("SELECT DATE_FORMAT(ultimo_login, '%d-%m-%Y %H:%i:%s') FROM membri WHERE username='$username' AND password='$password'") or die (mysql_error());

    $data mysql_fetch_assoc($select_data);

    mysql_query("UPDATE membri SET ultimo_login='$data' WHERE username='$username' AND password='$password'") or die (mysql_error()); 
    e nella creazione della tabella a "ultimo_login" devo attribuire DATETIME o TIMESTAMP?
    Social Network in costruzione.. Misto tra Twitter e Facebook.. Twitbook o facetter?

  5. #5
    E' difficile darti una risposta.

    il comando e' INSERT e non INSERTO
    crei un nuovo record con solo un campo (ultimo_login) valorizzato e gli altri?
    cerchi un record con username e password che non hai valrizzato (nella insert di prima)
    in $data hai un array che poi usi come fosse una variabile nell'UPDATE.

    Morale della favola lascia la data nel suo formato nativo e convertila solo quando la estrai per utilizzarla. datetime lo devi aggiornare tu, timestamp puo' aggiornarsi da solo ma sempre e solo nel formato nativo.

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

  6. #6
    si avevo sbagliato a scrivere.. Grazie!
    Social Network in costruzione.. Misto tra Twitter e Facebook.. Twitbook o facetter?

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.