Convertir la marca de tiempo a la fecha en una consulta MySQL

Resuelto remyremy asked hace 12 años • 13 respuestas

Quiero convertir un timestampen MySQL en una fecha.

Me gustaría formatear el campo user.registration en el archivo de texto como yyyy-mm-dd.

Aquí está mi SQL:

$sql = requestSQL("SELECT user.email, 
                   info.name, 
                   FROM_UNIXTIME(user.registration),
                   info.news
                   FROM user, info 
                   WHERE user.id = info.id ", "export members");

También probé la conversión de fecha con:

DATE_FORMAT(user.registration, '%d/%m/%Y')
DATE(user.registration)

Hago eco del resultado antes de escribir el archivo de texto y obtengo:

correo electrónico1;nombre1;DATE_FORMAT(usuario.registro, '%d/%m/%Y');noticias1

correo electrónico2;nombre2;noticias2

¿Cómo puedo convertir ese campo a la fecha?

remyremy avatar Feb 13 '12 01:02 remyremy
Aceptado
DATE_FORMAT(FROM_UNIXTIME(`user.registration`), '%e %b %Y') AS 'date_formatted'
Yatin avatar Sep 27 '2012 20:09 Yatin

Para conseguir una cita puedes casthacerlo

cast(user.registration as date)

y para conseguir un uso de formato específicodate_format

date_format(registration, '%Y-%m-%d')

Demostración de SQLFiddle

juergen d avatar Feb 12 '2012 18:02 juergen d

Convertir marca de tiempo a fecha en MYSQL

Haz la tabla con una marca de tiempo entera:

mysql> create table foo(id INT, mytimestamp INT(11));
Query OK, 0 rows affected (0.02 sec)

Insertar algunos valores

mysql> insert into foo values(1, 1381262848);
Query OK, 1 row affected (0.01 sec)

Echar un vistazo

mysql> select * from foo;
+------+-------------+
| id   | mytimestamp |
+------+-------------+
|    1 |  1381262848 |
+------+-------------+
1 row in set (0.00 sec)

Convierta el número en una marca de tiempo:

mysql> select id, from_unixtime(mytimestamp) from foo;
+------+----------------------------+
| id   | from_unixtime(mytimestamp) |
+------+----------------------------+
|    1 | 2013-10-08 16:07:28        |
+------+----------------------------+
1 row in set (0.00 sec)

Conviértelo a un formato legible:

mysql> select id, from_unixtime(mytimestamp, '%Y %D %M %H:%i:%s') from foo;
+------+-------------------------------------------------+
| id   | from_unixtime(mytimestamp, '%Y %D %M %H:%i:%s') |
+------+-------------------------------------------------+
|    1 | 2013 8th October 04:07:28                       |
+------+-------------------------------------------------+
1 row in set (0.00 sec)
Eric Leschinski avatar Feb 18 '2014 00:02 Eric Leschinski

Si el registrationcampo es realmente de tipo, TIMESTAMPdebería poder hacer simplemente:

$sql = "SELECT user.email, 
           info.name, 
           DATE(user.registration), 
           info.news
      FROM user, 
           info 
     WHERE user.id = info.id ";

y el registro debería mostrarse como aaaa-mm-dd

cs0lar avatar Feb 12 '2012 19:02 cs0lar

Simplemente use la función FECHA de MySQL:

mysql> select DATE(mytimestamp) from foo;
Morey avatar Feb 03 '2016 01:02 Morey