我有一张表,其中有许多列和一列用于保存日期值,并且dd mm yyyy HH:MM:SS'但我正在使用TEXT数据类型
创建此列 "create table if not exists TABLENAME (ID INTEGER, NAME TEXT,TIMESTAMP TEXT,AMOUNT)";
此处TIMESTAMP
是我要保存日期值的列。然后我在TIMESTAMP
列
- (void)insert {
NSString* dbPath = [DBManager getdbpath];
if (sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK) {
NSString* insertSQL =
[NSString stringWithFormat:@"insert into TABLENAME (ID,NAME, TIMESTAMP , AMOUNT values('%@','%@','%@','%@')",id,Name,TimeStamp, amount];
const char* insertStatement = [insertSQL UTF8String];
if (sqlite3_prepare_v2(database, insertStatement, -1, &statement, NULL) ==
SQLITE_OK) {
if (sqlite3_step(statement) == SQLITE_DONE) {
NSLog(@"Done inserting");
} else {
NSLog(@"%s", sqlite3_errmsg(database));
NSLog(@"Error while inserting data into database");
}
}
// sqlite3_reset(statement);
sqlite3_finalize(statement);
}
sqlite3_close(database);
}
因此,当我尝试从TABLENAME提取时,将命令通过DESC 子句应用到TIMESTAMP
列时,不会按正确的顺序提取值。
例如,如果有两个日期值' 02 05 2014 13:02:30' 和' 15 04 2014 14:10:15&# 39; 即可。如果通过desc timestamp的订单应用于此返回值
1>15 04 2014 14:10:15
2>02 05 2014 13:02:30
而不是
1>02 05 2014 13:02:30
2>15 04 2014 14:10:15.
答案 0 :(得分:1)
您的字符串格式将日期放在第一位,因此它将按字母顺序排序(按字母顺序排列)。你应该改变你将日期存储到按时间值自然排序的东西的方式。
正如您在SQLite data types page上看到的,正常机制是将其存储为ISO8601字符串,实数或整数。
我会建议一个整数;您可以使用NSDate的timeIntervalSince1970:
来获取正确的值。然后将正确排序这些。