todatetimestring month last day dates current mysql datetime timestamp

month - Convertir el datetime de MySQL al timestamp



todatetimestring (4)

Estoy tratando de convertir fecha y hora en marca de tiempo pero mysql me está dando advertencias y también los valores convertidos son incorrectos. Aquí está la consulta SQL

UPDATE table1 A, table2 B SET B.date_added=UNIX_TIMESTAMP(STR_TO_DATE(A.date_added, ''%M %d %Y %h:%i%p'')) WHERE A.id=B.id;

Advertencias

+---------+------+--------------------------------------------------------------------------+ | Level | Code | Message | +---------+------+--------------------------------------------------------------------------+ | Warning | 1411 | Incorrect datetime value: ''2011-06-11 20:29:02'' for function str_to_date | +---------+------+--------------------------------------------------------------------------+

Resultado

+---------------------+---------------------+ | date_added | date_added | +---------------------+---------------------+ | 2012-02-23 06:12:45 | 2012-12-23 19:08:33 | +---------------------+---------------------+

También intenté seguir la consulta pero muestra 00:00:00 en el campo de marca de tiempo.

UPDATE table1 A, table2 B SET B.date_added=UNIX_TIMESTAMP(A.date_added) WHERE A.id=B.id;


En MySQL 5.5 esto funciona bien:

UPDATE `some_table` SET `timestamp_col` = `datetime_col`

con datetime_col de tipo DATETIME y timestamp_col de tipo TIMESTAMP .

Es decir: no hay necesidad de conversión explícita de tipos.


Estás usando ''%M %d %Y %h:%i%p'' como formato de fecha, pero la advertencia muestra una cadena de fecha ''2011-06-11 20:29:02'', que no coincide con eso formato. Es decir, el año es el primero, y la hora es en formato de 24 horas.

Podría usar ''%Y-%M-%d %T'' lugar, ese formato coincidirá con los datos.

Vea más sobre los códigos de formato de fecha aquí: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format



UPDATE table1 A, table2 B SET B.date_added=UNIX_TIMESTAMP(A.date_added) WHERE A.id=B.id;

UNIX_TIMESTAMP(''2015-01-15 12:00:00''); es suficiente para convertir un datetime mysql en una marca de tiempo.