gpt4 book ai didi

iphone - SQLite3-选择日期范围不起作用

转载 作者:行者123 更新时间:2023-12-03 19:08:43 25 4
gpt4 key购买 nike

另一个让我悲伤的人。

在SQLite3 DB Select中,我查询(NSDate *)fromDate到(NSDate *)toDate中指定的日期范围

const char *sql = "SELECT * FROM A, B WHERE A.key = B.key AND A.date between ? and ?";


打开数据库后,我在Objective-C中运行查询,如下所示:

NSDateFormatter *tmpDatFmt = [[[NSDateFormatter alloc] init] autorelease];
[tmpDatFmt setDateFormat:@"dd-MM-yyyy"];

sqlite3_stmt *stmt;

if(sqlite3_prepare_v2(db, sql, -1, &stmt, NULL) == SQLITE_OK) {
NSLog(@"From %s to %s;", [[tmpDatFmt stringFromDate:fromDate] UTF8String], [[tmpDatFmt stringFromDate:toDate] UTF8String]);

sqlite3_bind_text(stmt, 1, [[tmpDatFmt stringFromDate:fromDate] UTF8String], -1, SQLITE_STATIC); // first '?'
sqlite3_bind_text(stmt, 2, [[tmpDatFmt stringFromDate:toDate] UTF8String], -1, SQLITE_STATIC); // second '?'

while(sqlite3_step(stmt) == SQLITE_ROW) {
NSLog(@"Success");}


在数据库中,我有一些与日期范围匹配的记录:

12-04-2010 = in seconds 1271059200
13-04-2010 = in seconds 1271145600
13-04-2010 = in seconds 1271152800
14-04-2010 = in seconds 1271267100


当我运行它时,第一个NSLog显示

From 2010-04-01 to 2010-04-30


我的问题是未选择记录(日志中未显示“成功”),我也不明白为什么。

早些时候,我误算了两天后的日期,因为

14-04-2010 = in seconds 1271232000
15-04-2010 = in seconds 1271318400
15-04-2010 = in seconds 1271325600
16-04-2010 = in seconds 1271439936


这些日期效果很好(4 x“成功记录”。我很困惑...

最佳答案

SQLite没有日期类型(尽管它具有良好的日期功能)。您的比较是在字符串上完成的,要使其正常工作,您应该将格式更改为yyyyMMdd或yyyy-MM-dd,以便它们按日期顺序排序。

关于iphone - SQLite3-选择日期范围不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2691886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com