代码之家  ›  专栏  ›  技术社区  ›  user142019

如何从SQLite3行中获取日期或日期时间?

  •  3
  • user142019  · 技术社区  · 14 年前

    sqlite3_column_date 我需要:

    int i = 0;
    for (NSString *key in [self valuesWithTypes]) {
      id value;
      if ([[[self valuesWithTypes] objectForKey:key] isKindOfClass:[NSString class]]) {
        value = [[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, i)] autorelease];
      }
      else if ([[[self valuesWithTypes] objectForKey:key] isKindOfClass:[NSNumber class]]) {
        value = [[NSNumber numberWithDouble:sqlite3_column_double(statement, i)] autorelease];
      }
      else if ([[[self valuesWithTypes] objectForKey:key] isKindOfClass:[NSDate class]]) {
    //  value = // WTF
      }
      else if ([[[self valuesWithTypes] objectForKey:key] isKindOfClass:[NSData class]]) {
        value = [[NSData dataWithBytes:sqlite3_column_blob(statement, i) length:sqlite3_column_bytes(statement, i)] autorelease];
      }
      [rowDictionary setValue:value forKey:key];
      i++;
    }
    

    谢谢

    1 回复  |  直到 14 年前
        1
  •  4
  •   pmg    14 年前

    根据 SQLite documentation

    • 文本
    • 真的
    • 整数

    如果您需要直接查看数据,文本可能是更漂亮的选择。
    我从来没用过真的
    我喜欢整数和UNIX时间戳:-)

    32位UNIX时间戳具有 problem 非常接近(64位时间戳没有问题),而且它们不能准确反映挂钟时间。如果时不时有一秒太多或太少对你来说都不是问题,我建议你这样做。