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?