Creé una tabla para mi base de datos de wordpress dentro de mi complemento con:
global $wpdb;
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
global $charset_collate;
$table_name = $wpdb->prefix .'tablename';
$sql="CREATE TABLE ".$table_name." (
...
date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP(),
...
) $charset_collate;
";
dbDelta($sql);
Eso funciona bien. Pero cuando trato de guardar valores enteros que representan la fecha, guarda “0000-00-00 00:00:00”, excepto en un caso, guarda la fecha correcta: “2014-01-11 01:59:00”. Pero todos los valores enteros son fechas de marca de tiempo válidas (int(1401110159), int(1400525576), int(1400510041), …). Aquí está el código que estoy tratando de insertar mis filas:
$wpdb->$table_name=$table_name;
$wpdb->insert($table_name, array(
...
"date" => $my_date_integer_variable,
...
));
¿Alguien sabe qué está causando el error?
Debe convertir las fechas de entrada a
Y-m:d H:i:s
formatear usandostrtodate()
oDatetime
objeto en PHP– Abhik Chakraborty
24 de octubre de 2014 a las 14:28
Hola, ya es un entero. Pero supongo que wordpress lo convierte en una cadena o algo así. Pero un valor se guarda como la fecha correcta. No tiene sentido para mí. Realmente confuso 😀
– usuario2718671
24/10/2014 a las 14:33
A
timestamp
la columna guarda el valor como entero internamentepero muestra te lo devuelvo comoY-m-d H:i:s
. Esa columna es útil porque siempre es UTC, lo que facilita compensarla con la información de la zona horaria. Cuando se inserta en untimestamp
columna, quiere un valor formateado de la misma manera que lo muestra, lo que significaY-m-d H:i:s
. Como han señalado los otros chicos, lo haces formateando la fecha correctamente. Si desea insertar la hora actual en untimestamp
puede emitirINSERT INTO your_ts_table SET ts_column = NOW();
(la última es una función de MySQL).– NB
24/10/2014 a las 14:50