rango - Convertir marca de tiempo hasta la fecha en la consulta de MySQL
insertar hora en mysql (9)
Quiero convertir una timestamp
de timestamp
en MySQL a 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 me sale:
email1; name1; DATE_FORMAT (user.registration, ''% d /% m /% Y''); news1
email2; name2; news2
¿Cómo puedo convertir ese campo a la fecha?
Convertir marca de tiempo hasta la 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)
Inserta 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)
Convierte el número a 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)
Convierta en 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)
Debe convertir la timestamp
de timestamp
a la date
.
select FROM_UNIXTIME(user.registration, ''%Y-%m-%d %H:%i:%s'') AS ''date_formatted''
Lo hice con la función ''fecha'' como se describe here :
(SELECT count(*) as the-counts,(date(timestamp)) as the-timestamps FROM `user_data` WHERE 1 group BY the-timestamps)
Para obtener una fecha puedes cast
cast(user.registration as date)
y para obtener un formato específico use date_format
date_format(registration, ''%Y-%m-%d'')
Demostración de SQLFiddle
Si el campo de registration
es realmente del tipo TIMESTAMP
, debería poder hacer:
$sql = "SELECT user.email,
info.name,
DATE(user.registration),
info.news
FROM user,
info
WHERE user.id = info.id ";
y el registro debería mostrar como aaaa-mm-dd
Si obtiene la consulta en su salida, debe mostrarnos el código que realmente muestra el resultado. ¿Puedes publicar el código que llama a requeteSQL?
Por ejemplo, si ha utilizado comillas simples en php, imprimirá el nombre de la variable, no el valor
echo ''foo is $foo''; // foo is $foo
Esto suena exactamente como su problema y estoy seguro de que esta es la causa.
Además, intente eliminar el símbolo @ para ver si eso le ayuda al darle más información.
así que eso
$SQL_result = @mysql_query($SQL_requete); // run the query
se convierte
$SQL_result = mysql_query($SQL_requete); // run the query
Esto detendrá cualquier supresión de errores si la consulta arroja un error.
Solo usa la función DATE de mysql:
mysql> select DATE(mytimestamp) from foo;
Tratar:
SELECT strftime("%Y-%d-%m", col_name, ''unixepoch'') AS col_name
Formateará la marca de tiempo en milisegundos en la cadena aaaa-mm-dd.
DATE_FORMAT(FROM_UNIXTIME(`user.registration`), ''%e %b %Y'') AS ''date_formatted''