2008-10-26 16 views

Respuesta

22

se puede usar MySQL para hacer esto para usted,

$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 usar 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; 
+1

FYI, falta la comilla de cierre para el parámetro de formato en su ejemplo 'DATE_FORMAT()' – Alfie

0

que utilizo:

fecha ("F j, Y", strtotime ($ fila [ 'my_timestamp']))

o puede cambiar el SELECT para: DATE_FORMAT (campo, '% d% H,% Y') como fecha y hora

2

Desea la función date().

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

0

Tiene 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 en realidad no importa cuál use, pero SEA CONSTANTE. 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.

10

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

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

Definitivamente, usted debe utilizar la clase DateTime (o cualquier hogar creció la clase equivalente), sobre la función de la fecha, y no utilizar las marcas de tiempo:

  • Marca de tiempo no funcionan bien en todos los ambientes para las fechas antes de 1970 - si usted trata con los cumpleaños, va a utilizar el código que se puede romper en algunos servidores
  • ser también muy cuidadoso del uso de strftime , parece una buena función, pero es muy difícil, ya que depende del conjunto locale, 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 trate únicamente las fechas entre 1970 y 2032 ...!

1

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 my_time) lo hará destruye tu 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 cálculos simples

0

Haga que la base de datos le dé el formato. 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.

Cuestiones relacionadas