Convertir la marca de tiempo a la fecha en una consulta MySQL
Quiero convertir un timestamp
en 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?
DATE_FORMAT(FROM_UNIXTIME(`user.registration`), '%e %b %Y') AS 'date_formatted'
Para conseguir una cita puedes cast
hacerlo
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
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)
Si el registration
campo es realmente de tipo, TIMESTAMP
deberí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
Simplemente use la función FECHA de MySQL:
mysql> select DATE(mytimestamp) from foo;