【发布时间】:2012-02-02 06:50:01
【问题描述】:
希望每个人都做得很好:)
我已经从保存在 sqlite 数据库中的日期开始检索月份。首先,我要感谢一些指导我将日期正确插入到 sqlite 数据库表中的专家,即以下格式:
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
我已经在控制器页面中显示了所有数据,包括日期,比如“查看提醒”页面。
现在我有一个视图控制器供用户查看月份,例如,如果用户从选择器视图中选择月份“一月”,它将导航到视图控制器,在其中显示与所选月份相对应的提醒。
我之前对如何访问从选择器视图中选择的字符串值感到震惊,以便我们可以使用查询:
"SELECT * FROM reminders WHERE Grp = '%@'",appDelegate.groupString
在应用程序委托文件中声明 groupString 的位置,在存在选择器视图的视图控制器中分配一个值,并在显示视图中使用上述查询访问该字符串
这是我发现here 的解决方案。现在我正在尝试做同样的事情来检索日期,即只需将查询写为:
"SELECT * FROM reminders WHERE Date = '%@'",appDelegate.monthString
它不起作用,因为日期保存在@“yyyy-MM-dd HH:mm:ss”中。所以我通过各种链接对此进行了研究,我尝试了以下方法:
"SELECT * FROM reminders WHERE MONTH like 'January %'" 等等。
但正如我所提到的,选择的字符串必须引用该值,因此使用:
MONTH like '%@',appDelegate.monthString
"SELECT * FROM reminders WHERE strftime('%m', Date) = '%@'",appDelegate.monthString
了解 sqlite 日期 数据类型和This Link
他们都没有工作
众所周知,我们有一个直接查询来检索特定月份的所有提醒:
"SELECT * FROM reminders WHERE Date BETWEEN '2012-01-01' AND '2012-01-31'"
效果很好,但我需要引用 January, February,March (从选择器视图中选择)等。作为迄今为止的参考字符串,我不知道如何获取月份部分从日期开始。是否有任何查询可以从日期中检索月份部分,例如 2012-01-01 作为一月或在该特定上下文中的其他日期....
请帮助我,在此先谢谢大家:)
编辑:
我已将显示格式更改为仅月份后跟日期,即:
ReminderClass *remin = [[ReminderClass alloc]init];
remin.Date = [[[NSString alloc]initWithUTF8String:(const char *)sqlite3_column_text(statament, 3)]autorelease];
NSDateFormatter *dateFormat = [[[NSDateFormatter alloc]init]autorelease];
[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *date = [dateFormat dateFromString:remin.Date];
[dateFormat setDateFormat:@"MMMM dd"];
NSString *dateVal = [dateFormat stringFromDate:date];
remin.Date = dateVal;
但在我们这样做之前,我们需要编写用于检索数据的 sql 查询,即:
sqlQuery = [NSString stringWithFormat:@"select * from reminders WHERE ????",appDelegate.monthString];
问号是我需要的,再次感谢:)
【问题讨论】:
-
请给出
appDelegate.monthString的示例值。 -
@ikegami Month 字符串不过是在应用程序委托中声明的字符串,我们将选择器视图值分配给该字符串(例如一月、二月、三月、四月等...)。因此基于在选择器视图中选择的值,我们必须显示与所选月份相对应的提醒(比如一月,三月)或者它是什么月份...谢谢您的关注:)
-
@ikegami 我已经找到了解决方案的答案,请在下面查看我的解决方案,无论如何再次感谢您的关注:)