Tengo un campo en una tabla MySQL que tiene un timestamptipo de datos. Estoy guardando datos en esa tabla. Pero cuando paso la marca de tiempo ( 1299762201428) al registro, automáticamente guarda el valor 0000-00-00 00:00:00en esa tabla.
¿Cómo puedo almacenar la marca de tiempo en una tabla MySQL?
Aquí está mi INSERTdeclaración:
INSERT INTO table_name (id,d_id,l_id,connection,s_time,upload_items_count,download_items_count,t_time,status)
VALUES (1,5,9,'2',1299762201428,5,10,20,'1'),
(2,5,9,'2',1299762201428,5,10,20,'1')
php
mysql
database
sql-insert
Gautamlakum
fuente
fuente

Respuestas:
pasar así
fuente
datetime, si desea cambiarlo,timestampcambie el tipo de columna avarchar(15)strtotime. editar: por cierto, la marca de tiempo solo cubre un rango de todas las fechas posibles (1970-01-01 a xx-xx-2032 creo)Hola, usa la
FROM_UNIXTIME()función para esto.Me gusta esto:
fuente
date('Y-m-d H:i:s','1299762201428')?FROM_UNIXTIMEproduce un tipo de fecha de mysql nativo mientras que phpdate()devuelve una cadena.fuente
Algunas cosas para aclarar:
por lo tanto, la respuesta correcta sería
fuente
El tipo de datos ' bigint unsigned ' puede adaptarse a este requisito.
fuente
Supongo que el campo en el que está tratando de guardar el valor es un campo de fecha y hora que no lo es, pero lo mismo parece ser cierto para las marcas de tiempo . Si es así, mysql espera que el formato sea Año-mes-día Hora: minuto: segundo. Para guardar la marca de tiempo, tendrá que convertir el campo a numérico usando una consulta como
Si está usando la hora actual, puede usar now () o current_timestamp.
fuente
También puede utilizar
now()en su consulta, es decir:Utilizará la marca de tiempo actual.
fuente
Utilice
FROM_UNIXTIME().Nota: 1299762201428 se parece más a una marca de tiempo de milisegundos (como Date () * 1 en JavaScript), y probablemente tenga que dividir eso por 1000.
fuente
Verifique el tipo de campo en la tabla, simplemente guarde el valor de la marca de tiempo en el tipo de datos como,
bigintetc.No
datetimeescribafuente
Esto debería hacerlo:
fuente
Si la marca de tiempo es la hora actual, puede usar la
NOW()función mysqlfuente
Utilice el
datetimetipo de campo. Viene con muchas ventajas como la legibilidad humana (nadie lee las marcas de tiempo) y las funciones de MySQL .Para convertir desde una marca de tiempo Unix, puede usar la función MySQL
FROM_UNIXTIME(1299762201428). Para convertir de nuevo se puede utilizarUNIX_TIMESTAMP:SELECT UNIX_TIMESTAMP(t_time) FROM table_name.Por supuesto, si no te gusta la función de MySQL, siempre se puede usar PHP:
'INSERT INTO table_name SET t_time = ' . date('Y-m-d H:i:s', $unix_timestamp).fuente
timestamptipo de campo también es legible por humanos (cuando se usaSELECTen la consola). Son muy diferentes y ambos tienen sus desventajas. La principal diferencia es cómo se manejan las zonas horarias.datetimepor varias razones. ¿Cuál es la mayor desventaja en su opinión?timestamp: coincide mejor con las marcas de tiempo de PHP, ya que es inmune a la configuración de la zona horaria tanto del servidor como del cliente, mientras quedatetimecambia el valor que se muestra según la zona horaria de su cliente MySQL (por supuesto, depende de su proyecto, que uno es mejor). mayor desventaja paratimestamp: no admite valores NULL y (no sé qué fumaron cuando programaron esto) unTIMESTAMP NOT NULLcampo se convierte en unTIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP. En mi caso, desafortunadamente necesito usarloTIMESTAMPpor razones de TZ.Mejor es usar el tipo de datos
varchar(15).fuente
Que puede hacer:
$date = \gmdate(\DATE_ISO8601);.fuente
Si sé que la base de datos es MySQL, usaré la función NOW () así:
fuente