sqlite查询用于检索保存为字符串的两个日期之间的数据

时间:2011-11-15 11:54:32

标签: ios iphone objective-c sqlite

 NSString *insertSQL = [NSString stringWithFormat:@"INSERT INTO ADDEXPENSE(date, description, category, amount) VALUES (\"%@\", \"%@\", \"%@\",\"%@\")", fieldOne.text, fieldTwo.text,fieldThree.text , fieldFour.text];

我为fieldOne选择了一个日期选择器,保存数据工作正常。 但是如何在两个日期之间检索数据?

这是我使用的pickerview

UIDatePicker *picker = (UIDatePicker *)sender;
NSDate *dateSelected = [picker date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];

5 个答案:

答案 0 :(得分:1)

我建议您在Date and Time Functions网站上阅读此SQLite。您可以调整这些函数以从 NSDate 保存的格式中检索unix-timestamp,而不是在 WHERE 子句中的SQL查询中使用它们。

答案 1 :(得分:1)

您可以构建一个sqlite查询来选择日期范围内的行。首先,您必须格式化为sql友好格式,如下所示:

NSDate * selected = [datePicker date];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd"];
NSString * dateString = [dateFormat stringFromDate:selected];
NSString * sql = [[NSString alloc] initWithFormat:@"SELECT * FROM table WHERE (startdate <= '%@') AND (enddate >= '%@)", dateString, dateString];

等等。将它们插入表格时,您需要正确格式化日期。

答案 2 :(得分:1)

我也遇到了同样的问题。我必须在两个日期之间获取数据。但我将日期作为SQLite中的字符串以'YYYY-MM-dd'格式存储。然后我使用下面的查询来获取数据。 &安培;我得到了结果。在这里我只是将我的日期列转换为Date类型。

SELECT * FROM tableName WHERE columnnName(Date) BETWEEN 'YYYY-MM-dd' and 'YYYY-MM-dd'

答案 3 :(得分:0)

首先,您必须检索日期并转换为nsdates。然后您必须使用日期中的比较功能检查每个行日期(是否在两个提到的日期之间)。

答案 4 :(得分:0)

以下是我正在做的iOS应用程序,它使用SQLite DB。

SELECT COUNT(carSold) 
FROM cars_sales_tbl
WHERE date
BETWEEN '2015-04-01' AND '2015-04-30'
AND carType = "Hybrid"

它就像一个魅力! 希望有人可以使用它!

干杯!