Quiero generar una consulta con algo de texto (am pm con tiempo basado) en mysql.

Mi mesa como esta

id   starttime    endtime
1    9:00         10:00
2    14:00        16:00

Mi tiempo está en formato de 24 horas. Quiero consulta con resultado.

id   starttime     endtime
1    9:00am        10:00am
2    2:00pm        4:00pm

¿Cómo hacerlo?

0
user8769728 19 feb. 2018 a las 09:44

2 respuestas

La mejor respuesta

Puede utilizar DATE_FORMAT ().

SELECT id,
        DATE_FORMAT(starttime, '%h:%i %p') AS starttime,
        DATE_FORMAT(endtime, '%h:%i %p') AS endtime
FROM TableName

Aquí tienes una demostración.

Sin embargo, si el tipo de datos de su columna es string. Necesita convertirlo a DATETIME o TIME usando STR_TO_DATE para que DATE_FORMAT() funcione correctamente.

SELECT id,
        DATE_FORMAT(STR_TO_DATE(starttime, '%k:%i'), '%h:%i %p') AS starttime,
        DATE_FORMAT(STR_TO_DATE(endtime, '%k:%i'), '%h:%i %p') AS endtime
FROM TableName;

Aquí tienes una demostración.

0
Jithin Scaria 19 feb. 2018 a las 07:04

Podemos usar TIME_FORMAT como se muestra a continuación

mysql> select TIME_FORMAT('14:00', '%r') ;
+----------------------------+
| TIME_FORMAT('14:00', '%r') |
+----------------------------+
| 02:00:00 PM                |
+----------------------------+

O si es de una tabla nombre de tabla y las columnas son hora de inicio y hora de finalización , entonces,

select id,TIME_FORMAT(starttime, '%r'),TIME_FORMAT(endtime, '%r') from tablename;

O podemos usar DATE_FORMAT como se muestra a continuación, (nota: si starttime y endtime son del tipo de datos time)

select id,DATE_FORMAT(starttime, '%h:%i %p'),DATE_FORMAT(endtime, '%h:%i %p') from tablename;

Espero que esto haga tu trabajo

1
Jithin Scaria 19 feb. 2018 a las 06:57