Inserire la data e l'ora in MySQL
Domanda
Sto cercando di inserire la data e l'ora in MySQL datetime campo. Quando un utente seleziona una data e l'ora, genererà due variabili POST. Ho cercato internet, ma ancora non è sicuro come farlo.
Il mio codice.
//date value is 05/25/2010
//time value is 10:00
$date=$_POST['date'];
$time=$_POST['time'];
$datetime=$date.$time
Se inserisco $ datetime in MySQL, la data sembra essere 0000-00-00: 00: 00: 00
I grato se qualcuno mi potrebbe aiutare su questo. Grazie.
Soluzione
$datetime = $_POST['date'] . ' ' . $_POST['time'] . ':00';
$datetime = mysql_real_escape_string($datetime);
$query = "INSERT INTO table(timestamp) VALUES ('$datetime')";
soluzione alternativa in grado di gestire più formati:
$datetime = $_POST['date'] . ' ' . $_POST['time'];
$datetime = mysql_real_escape_string($datetime);
$datetime = strtotime($datetime);
$datetime = date('Y-m-d H:i:s',$datetime);
$query = "INSERT INTO table(timestamp) VALUES ('$datetime')";
Altri suggerimenti
Data deve aver formato mostrato a voi: 0000-00-00 00:00:00
Quindi, è necessario convertirlo. Ci sono mille domande su questa conversione qui su SO.
La via più breve è come
list($m,$d,$y) = explode("/",$_POST['date']);
$date = mysql_real_escape_string("$y-$m-$d ".$_POST['time']);
Credo che gli sguardi formato datetime in questo modo:
YYYY-MM-DD HH:MM:SS
in modo che hai per formattare il $ datetime a guardare in quel modo. E nella query che deve essere incapsulati in marchi quoation.
- O si trasformare la stringa di essere nel formato
YYYY-MM-DD HH:MM:SS
da soli, -
o si utilizza la funzione
str_to_date()
da MySQL.INSERT INTO valori tavolo DATETIME (str_to_date ($ data, "% m /% d /% Y% h:% i"))
Per quanto mi ricordo, per impostazione predefinita, Mysql datetime dovrebbe essere in "hh aaaa-mm-dd: ss: mm" Formato.
ho data e l'ora aggiunto DB MySQL tramite API in questo modo:
chiamate API
http://localhost/SendOrder.php?odate=20120323&otime=164545
- tipo
odate
è DATA - tipo
otime
è il tempo in DB.
Sarà memorizzare Odate come 2012-03-23 ??e NO ORA come 16:45:45.