2011-03-22 18 views
7

estoy mirando esta documentación http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_maketime Y sé Debo estar perdiendo, pero yo sólo no veo una función aquí a la que pueda pasar segundos (o milisegundos), y recupero una marca de tiempo, o simplemente una cadena que representa la fecha.¿Cómo se puede convertir segundos (o milisegundos) para una marca de tiempo (o simplemente una cadena que se parece a una fecha) en MySQL

Por favor ayuda.

Respuesta

13

Si está trabajando con segundos desde 1970 (es decir, marcas de tiempo Unix entonces FROM_UNIXTIME()) bien podría ser lo que desea.

FROM_UNIXTIME devuelve una representación del argumento unix_timestamp como un valor en 'YYYY-MM-DD HH:MM:SS' o YYYYMMDDHHMMSS.uuuuuu formato, dependiendo de si la función es utilizado en una cadena o un contexto numérico.
El valor se expresa en la zona horaria actual. unix_timestamp es un valor interno de marca de tiempo tal como el producido por la función UNIX_TIMESTAMP().

+0

+1: Muéstremela –

+0

impresionante! Muchas gracias –

0

tratan a continuación

STR_TO_DATE ('Dec/15/2008', '% M /% d /% Y'); => 2008-12-15

STR_TO_DATE ('31/Jan/2008 ','% d /% M /% Y '); => 2008-01-31

STR_TO_DATE ('31/Jan/2008 23:52 ','% d /% M /% Y% H:% i ') => 2008-01-31 23:52 : 00

0

En primer lugar, ¿qué quiere decir con pasar segundos para recuperar una marca de tiempo? ¿No son los segundos la marca de tiempo ya?

En segundo lugar, que busca esta función si quiere hacer esto en SQL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format

En tercer lugar, es posible que desee considerar simplemente recuperar la marca de tiempo de la base de datos, y dejar que la aplicación (por ejemplo, en PHP, no sé qué idioma estás usando) conviértalo en el formato requerido. Si eres coherente en este diseño, te permite definir más genéricamente tus formatos de fecha.

+0

No entiendes mi pregunta. Entonces, no, los segundos no son marcas de tiempo (son segundos), el método que me indicaste toma una fecha (no segundos) que es precisamente lo que trato de OBTENER, pero no tengo, y para tu tercer punto , esa es mi pregunta ... ¿cómo obtengo una marca de tiempo de la base de datos, cuando el campo de la base de datos se almacena como segundos en bruto? –

+0

1) Las marcas de tiempo de UNIX están en segundos, por lo que no veo la diferencia. Se más claro. 2) Tienes razón, lo siento, 3) esa no es tu pregunta, estás preguntando cómo obtener la consulta SQL para reformatear los datos, sugiero que obtengas el valor bruto de la base de datos y lo re-formatee a tus deseos en tu aplicación. –

+1

No estoy seguro de lo que dices (y recibí mi respuesta, entonces, solo estoy comentando que seas educado). Aprecio que ofrezcas ayuda, pero no estoy seguro de cómo mi pregunta no está clara.Dije que estoy buscando pasar unos segundos a un método que me devuelva una marca de tiempo (o alguna proximidad). ¿Cómo podría ser más claro? –

3

Echa un vistazo FROM_UNIXTIME. Eso convierte el número de segundos desde la medianoche del 1 de enero de 1970 en una marca de tiempo.

Si tiene el tiempo en segundos desde la medianoche de su día actual, utilice la función MAKETIME.

MAKETIME(seconds/(60*60), 
      seconds/60, 
      seconds % 60) 
+0

from_unixtime hizo el truco, muchas gracias –

Cuestiones relacionadas