Actualmente tengo una base de datos mySQL con dos campos de TEXTO: Date y Time . Estos tienen el formato 'dd/mm/aaaa' y '0:00' respectivamente, por ejemplo, '11/08/2020' y 19:12. Quiero crear un tercer campo llamado Timestamp de tiempo (de tipo INT) y convertir los dos campos originales en este campo de marca de tiempo y eliminar los campos de texto de fecha/hora.
Investigué un poco con respecto al uso de UNIX_TIMESTAMP() y STR_TO_DATE() pero parece que no puedo hacerlo funcionar, el formato parece ser incorrecto.
¿Cómo puedo lograr esto en SQL y convertir dos campos de cadena que representan la fecha y la hora en un tercer campo para reemplazarlos, que solo almacena la marca de tiempo de Unix?
Este es mi mejor intento hasta ahora...
SELECT UNIX_TIMESTAMP(STR_TO_DATE(CONCAT(`InfractionDate`, " ", `InfractionTime`), '%d %M %Y %h:%i%p')) FROM `playerinfractions` La tabla se llama playerinfractions y la fecha/hora se almacenan en los campos de TEXTO InfractionDate y InfractionTime .
¡Muchas gracias de antemano!
El patrón de formato que usa en la función STR_TO_DATE() es incorrecto.
Prueba esto:
SELECT UNIX_TIMESTAMP( STR_TO_DATE( CONCAT(`InfractionDate`, ' ', `InfractionTime`), '%d/%m/%Y %H:%i') ) FROM `playerinfractions`Debe decirle a STR_TO_DATE el formato correcto de su fecha y hora, que sugirió que fuera '%d/%m/%Y %H:%i'
SELECT UNIX_TIMESTAMP( STR_TO_DATE( CONCAT('10/08/2020', ' ', '12:20'), '%d/%m/%Y %H:%i' ) ) ) FROM `playerinfractions`Así que usando tus columnas
SELECT UNIX_TIMESTAMP( STR_TO_DATE( CONCAT(`InfractionDate`, ' ', `InfractionTime`), '%d/%m/%Y %H:%i' ) ) ) FROM `playerinfractions`Intenté pasar una cadena a la misma función en el siguiente formato y funcionó. También puede compartir su formato para verificarlo más a fondo.
select UNIX_TIMESTAMP(STR_TO_DATE(CONCAT('8/12/2020',' ', '12:01:49' ),'%m/%d/%Y %h:%i:%s'))