4

我找不到我的问题的解决方案。

我有一个带有如下表格的 HTML5 Web SQL 数据库:

db.transaction(function(tx) {   
        tx.executeSql("CREATE TABLE IF NOT EXISTS todo " +
        "(todoId INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, " +
        "note VARCHAR(100) NOT NULL, " + 
        "state VARCHAR(100) NOT NULL, " + 
        "todoDate DATETIME NOT NULL)");
});

当我向该数据库添加值时(符号 = dd-MM-yyyy),看起来 todoDate 作为字符串添加到数据库中。当我使用以下查询从数据库中收集和排序一些 todoDate 值时,这些值的排序顺序错误:

sql = "select * FROM todo order by todoDate asc";

输出:

             todoId -     note        - state         - todoDate  
             3      -     blabla      - someinfo     - 01-01-2013
             1      -     blabla      - someinfo     - 22-09-2012
             2      -     blabla      - someinfo     - 25-10-2012

我想得到以下订单:

             todoId -     note        - state         - todoDate  
             1      -     blabla      - someinfo     - 22-09-2012
             2      -     blabla      - someinfo     - 25-10-2012
             3      -     blabla      - someinfo     - 01-01-2013

我怎样才能做到这一点?

我找到了函数 str_to_date 但它不起作用或我做错了什么。

提前致谢!

4

3 回答 3

5

HTML5 Web SQL 数据库实际上是底层的 SQLite。SQLite 没有 DATETIME 类型。如果您向他们发送字符串,它会将它们存储为字符串。SQLite 建议您使用 ISO-8601 规范格式(例如“2012-09-22”),以便按预期进行比较。SQLite 提供了一堆有用的日期时间函数来处理数据库中的日期时间值。见这里。或者,您可以存储毫秒,但我个人更喜欢存储字符串,因为它们是人类可读的,有助于调试。

于 2012-11-14T20:22:55.040 回答
0
Like that query you can fire :
select * from (select column1,...,convert(date,column) from table) as a order by dateColumn
于 2012-09-27T12:15:15.583 回答
0

我找到了解决方案。

这是代码:

SELECT * FROM tablename ORDER by substr(dateColumn,7)||substr(dateColumn,4,2)||substr(dateColumn,1,2);
于 2012-09-27T13:59:25.050 回答