Cómo orderar por date / hora con AM / PM en SQLITE

Mi formatting de date es: "aaaa-MM-dd" (2017-03-23)

Mi formatting de hora es: "hh: mm a" (10:15 p.m.)

Si en MYSQL puede realizar esto para convertir el time con am / pm:

SELECT * FROM table_name ORDER BY STR_TO_DATE(timeField,'%h.%i%p'); 

¿Cómo se puede realizar esto en SQLITE?

Intenté esto pero no funcionó:

 SELECT appointment_date, start_time FROM appointment order by appointment_date, DATE(start_time, '%h:%i %p') 

Resultado: enlace de image

Supuestamente AM debe ser primero que PM porque el valor pnetworkingeterminado es ASC, intenté usar DESC también pero no arregló el resultado correctamente.

Parece que está almacenando el valor start_time() en una cadena.

Tu puedes hacer:

 order by appointment_date, (case when start_time like '% am' then 1 else 2 end), start_time 

SQLite realmente no admite am / pm en formattings de date / hora. Pero, esto es bastante fácil de lograr con like .

Una mejor solución sería almacenar su time en formatting de 24 horas en una columna más y esa columna debe ser del tipo DATETIME no varchar.

Puedes convertir tu time usando:

  SimpleDateFormat displayFormat = new SimpleDateFormat("HH:mm"); SimpleDateFormat parseFormat = new SimpleDateFormat("hh:mma"); Date date=new Date(); try { date = parseFormat.parse(AmPmTimeFormatColumn); }catch (Exception e){} values.put("24HourFormatColumn", displayFormat.format(date)); 

Luego ordere así:

select * del order table_name antes del DATETIME (24HourFormatColumn);