2008-10-06 93 views
5

Quiero mostrar el campo TIME de mi tabla mysql en mi sitio web, pero en lugar de mostrar las 21:00:00, etc. Quiero mostrar las 8:00 PM. Necesito una función/código para hacer esto o incluso cualquier puntero en la dirección correcta. Marcará la primera respuesta con algún código como la respuesta correcta.Convertir mysql TIME de 24 HR a formato AM/PM

Respuesta

0

Uso DATE_FORMAT()

DATE_FORMAT (<Fieled>, '% h:% I:% s% p')

o

DATE_FORMAT (<Fieled>, '% r')

2

también puede seleccionar la columna como au nix timestamp usando la función UNIX_TIMESTAMP() de MYSQL. Luego formatee en PHP. OMI esto es más flexible ...

select a, b, c, UNIX_TIMESTAMP(instime) as unixtime; 

en PHP El uso de la función de date() & formato de la forma que desee.

<?php echo date('Y/m/d', $row->unixtime); ?> 

La razón me gusta este método en lugar de formatearlo en SQL es b/c, para mí, el formato de la fecha es una decisión pantalla & (en mi opinión) el formato de la fecha en SQL se siente mal .. ¿Por qué poner lógica de visualización en tu SQL?

Ahora - si no está procesando los datos en PHP y está haciendo consultas adhoc entonces DATE_FORMAT() es el camino a seguir. Pero si vas a hacer que los datos aparezcan en la web, iré con UNIX_TIMESTAMP() y haré el formateo en PHP ...

Quiero decir ... digamos que quieres cambiar cómo son las fechas & que se muestra en la página ... ¿no se sentiría "apagado" al tener que modificar su SQL para un ajuste de pantalla?

mis 2 centavos

+0

Tengo una clase que contiene todos mis códigos de manejo de fechas. En el código de inicio de sesión, solo llamo a una función de esa clase que formatea la hora usando DATE_FORMAT(). Por lo tanto, realmente no se muestra en el código de visualización y no se siente apagado Las fechas de Mysql son más legibles que las marcas de tiempo de Unix. – Ali

+0

+1 por decir "el formato de la fecha es una decisión de visualización", de hecho lo es, estoy de acuerdo contigo 200% en esto –

0

que habían estado tratando de hacer lo mismo y consiguieron esta página de regresar de una búsqueda en Google. Trabajé una solución para el momento 21:00:00;

  • usando DATE_FORMAT(<field>,'%l.%i%p') que volvió 21:00

  • poniendo una función LOWER() alrededor de ella para volver 21:00

Así que el código completo es; DATE_FORMAT(<field>,'%l.%i%p')

funcionaba bien para mí ...

7

muestran los datos de fecha y hora & en formato AM/PM con el siguiente ejemplo ...

SELECT DATE_FORMAT(`t`.`date_field`,'%h:%i %p') AS `date_field` FROM `table_name` AS `t` 

O

SELECT DATE_FORMAT(`t`.`date_field`,'%r') AS `date_field` FROM `table_name` AS `t` 

Ambos están trabajando correctamente.

Cuestiones relacionadas