如何在SQLITE中按日期/时间与AM / PM进行排序

时间:2017-01-30 01:29:56

标签: ios sql sqlite datetime swift3

我的日期格式为:“yyyy-MM-dd”(2017-03-23)

我的时间格式为:“hh:mm a”(晚上10:15)

如果在MYSQL中你可以执行此操作以使用am / pm转换时间:

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

如何在SQLITE中执行此操作?

我尝试了这个但是没有用:

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

结果: Image Link

据说AM首先应该是PM,因为默认是ASC,我也尝试过使用DESC,但没有正确安排结果。

2 个答案:

答案 0 :(得分:2)

您似乎将start_time()值存储在字符串中。

你可以这样做:

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

SQLite并不真正支持日期/时间格式的am / pm。但是,这很容易用like完成。

答案 1 :(得分:0)

更好的解决方案是将您的时间以24小时格式存储在另一列中,该列的类型应为DATETIME而不是varchar。

您可以使用以下方式转换时间:

        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));

然后这样订购:

通过DATETIME(24HourFormatColumn)选择* from table_name order;