我真的陷入试图在Objective C.这里的SQLite查询来比较日期是我在做什么:SQLite的存储,检索和比较一个DATETIME场
存放日期:
This document告诉我使用下面指定的日期格式,但它看起来不正确。尽管我尝试使用yyyy-MM-dd hh:mm:ss
但没有成功。
NSDate *today = [NSDate date];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"YYYY-MM-DD HH:MM:SS"];
NSString *dateString=[dateFormat stringFromDate:today];
NSString *query = [NSString stringWithFormat: @"INSERT INTO user (edited) VALUES (\"%@\")", dateString];
比较日期
我使用时间戳这一点,我转换为datetime字符串
long stamp = [sessie integerForKey:@"stamp"];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"YYYY-MM-DD HH:MM:SS"];
NSString *dateString = [formatter stringFromDate:[NSDate dateWithTimeIntervalSince1970:stamp]];
sqlite3_stmt *result = [db selectQuery:[NSString stringWithFormat:@"SELECT * FROM user WHERE edited > '%@'", dateString]];
的时间戳使用[[NSDate date] timeIntervalSince1970]
简单地生成。问题是查询不会给出正确的结果,我甚至不知道日期是否正确存储在第一位。任何帮助将不胜感激!
不相关,但我认为你知道你应该警惕使用'stringWithFormat'来构建你的SQL。在这种情况下可以,但是如果使用任何用户输入,你应该在'sqlite3_bind_text'中使用'?'占位符,否则你会暴露出一大堆问题。做'sqlite3_bind_xxx'正常工作可能会很麻烦,但使用[FMDB](https://github.com/ccgus/fmdb)也可以让你的生活更容易与数据库连接(并且它完全解决了与日期相关的问题,太)。 – Rob
谢谢你指出。我一定会检查FMDB。今天我学到了很多东西:) – Tumtum