订单表按日期存储在文本列中

时间:2019-01-12 11:58:45

标签: android sqlite

我有一个应用程序,并在SQLite上存储了一些数据。我有一列名为date并存储字符串数据格式,例如:

  

30.12.2018-一些数据
  01.01.2019-一些数据
  2018年12月31日-一些数据
  02.01.2019-一些数据

但是当我想SELECT * FROM table ORDER BY date时,这无法正常工作。我可以在不更改日期格式的情况下按照正确的日期顺序对此表进行排序吗?

例如当我使用SELECT * FROM mytable ORDER BY date时,期望的结果:

  

02.01.2019-一些数据
  01.01.2019-一些数据
  2018年12月31日-一些数据
  2018年12月30日-一些数据

1 个答案:

答案 0 :(得分:1)

您必须更改此列的格式,以避免出现情况
您需要这样的语句:

select * from mytable 
order by 
substr(date, 7, 4) || substr(date, 4, 2) || substr(date, 1, 2) || substr(date, instr(date, '-')) desc

此部分:

substr(date, 7, 4) || substr(date, 4, 2) || substr(date, 1, 2)

将日期重新安排为YYYYMMDD,以便它具有可比性并且可以排序。