yyyy with hora from formateo fechas con php mysql formatting timestamp

with - ¿Cuál es la forma más sencilla de formatear una marca de tiempo de SQL en PHP?



strtotime formats php (8)

Definitivamente debe usar la clase DateTime (o cualquier clase doméstica creció de manera equivalente), sobre la función de Fecha, y no usar marcas de tiempo:

  • La marca de tiempo no funciona bien en todos los entornos para fechas anteriores a 1970: si se ocupa de cumpleaños, se depende de un código que puede romperse en algunos servidores.
  • Tenga también mucho cuidado con el uso de strftime, parece una función agradable, pero es muy poco útil, ya que depende de setlocale, que es todo el proceso. Lo que esto significa es que si su servidor es un cuadro de Windows, tiene un proceso por procesador y el resto es de subprocesos múltiples; en otras palabras, un setlocale en un script afectará los otros scripts en el mismo procesador, muy desagradable !

¡Al final del día, no confíe en las marcas de tiempo, a menos que se encuentre en un entorno de solo inglés, y solo trate las fechas entre 1970 y 2032 ...!

¿Cuál es la forma más simple y rápida de completar el código PHP a continuación, de modo que la salida esté en un formato fácil de usar (por ejemplo, "27 de octubre de 2006")?

$result = mysql_query("SELECT my_timestamp FROM some_table WHERE id=42", $DB_CONN); $row = mysql_fetch_array($result); $formatted_date = ???($row[''my_timestamp'']); echo $formatted_date;


Desea la función de fecha () .

Si tiene una columna DATE o DATETIME, puede usar SELECT UNIX_TIMESTAMP (mycolumn) AS mycolumn para convertirla a una marca de tiempo Unix para la función de fecha que se va a utilizar.


Tienes una opción. Puede usar la función date () en PHP y procesar la salida de MySQL, o puede usar la función date_format () en MySQL y hacer que devuelva una cadena formateada para comenzar.

En mi experiencia es que realmente no importa que uses, sino sé consistente. Tienen diferentes parámetros de formato, por lo que si usa ambos en una aplicación determinada, pasará mucho tiempo tratando de recordar si ''W'' le da el nombre del día de la semana o de la semana del año.


Yo suelo:

date ("F j, Y", strtotime ($ row [''my_timestamp'']))

o puede cambiar el SELECCIONAR a: DATE_FORMAT (campo, ''% d% M,% Y'') como fecha y hora


Haga que la base de datos haga el formateo para usted. Es mucho menos susceptible a errores porque no está leyendo una cadena y convirtiéndola. En cambio, la base de datos va de su formato nativo a una cadena.


Puedes usar MySQL para hacer esto por ti,

$result = mysql_query("SELECT DATE_FORMAT(my_timestamp, ''%M %d, %Y) AS my_timestamp FROM some_table WHERE id=42", $DB_CONN); $row = mysql_fetch_array($result); $formatted_date = $row[''my_timestamp'']; echo $formatted_date;

O usa PHP,

$result = mysql_query("SELECT my_timestamp FROM some_table WHERE id=42", $DB_CONN); $row = mysql_fetch_array($result); $formatted_date = strftime(''%B %d, %y'', $row[''my_timestamp'']); echo $formatted_date;


Si tiene sus tablas indexadas en ese campo de fecha y utiliza una función de formato de datos mysql en su llamada ... (es decir, SELECCIONE DATE_FORMAT (my_timestamp, ''% M% d,% Y) AS mi_hora) destruirá su indexación. Algo para tener en cuenta. Hemos visto incrementos dramáticos en la velocidad al eliminar todo el funcionamiento de nuestras sentencias SQL y dejar que php maneje todo. Funcionando como fechas de formateo y matemática simple


Tiendo a hacer el formato de fecha en SQL, como la respuesta de Aron . Aunque para las fechas de PHP, prefiero usar el objeto DateTime (PHP5 +) sobre la fecha :

$timestamp = new DateTime($row[''my_timestamp'']); echo $timestamp->format(''F j, Y'') . ''<br />''; echo $timestamp->format(''F j, Y g:ia'');