2012-10-31 37 views
1

我有一个字符串字段包含日期格式为“01.01.2012”的SQLITE DB。 我想要的是在查询中按字符串格式化日期排序。 我试过没有成功:按字符串格式化日期字段SQLITE DB排序查询

SELECT * FROM fahrer, fahrzeuge, nutzungsarten, fahrtenbuch WHERE fahrtenbuch.nutzungsart_id = nutzungsarten._id AND fahrtenbuch.fahrzeuge_id = fahrzeuge._id AND fahrtenbuch.fahrer_id = fahrer._id ORDER BY strftime ('%d.%m.%Y', fahrtenbuch.startdatum) 

我在做什么错了?

+0

你得到了什么?一个错误?日期不合理? –

+0

没有错误。给定的订单没有排序。它由条目的ID分类。 – venni

+0

使用ASC对日期进行排序。 SELECT * FROM table ORDER BY日期ASC –

回答

2

startdatum列中的值不是在SQLite的识别的格式,所以你不能用它作为参数传递给strftime。 (即使它的工作,结果将不能正确地排序,因为日期格式不与最显著场开始,这一年。)

你可以尝试提取日期字段,以便排序是等效采用在yyyy-mm-dd顺序:

SELECT ... 
ORDER BY substr(startdatum, 7, 4), 
     substr(startdatum, 4, 2), 
     substr(startdatum, 1, 2) 

但我会建议将这些值转换为a supported format摆在首位。

+0

CL .:绝对救生员。 substr()的排序工作正常。不过,我会看看支持的格式。非常感谢你! – venni

+0

我也必须这样做我的问题:http://stackoverflow.com/questions/40129782/why-is-the-order-by-not-working-in-a-sqlite-query谢谢。 – Si8