SQLite 存储、检索和比较 DATETIME 字段

2023-12-03

我真的很难在 Objective C 中比较 SQLite 查询中的日期。这就是我正在做的事情:

存储日期:

这个文件告诉我使用下面指定的日期格式,但它似乎不正确。我尝试使用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];

比较日期

我为此使用时间戳,并将其转换为日期时间字符串

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]。问题是查询不会给出正确的结果,而且我什至不知道日期是否首先正确存储。任何帮助将不胜感激!


一些观察结果:

  1. 对于您的日期字符串,您绝对不想使用YYYY-MM-DD HH:MM:SS。这不会生成有效的日期字符串。使用yyyy-MM-dd hh:mm:ss更接近,但也不完全正确(因为您将使用 12 小时hh). Use yyyy-MM-dd HH:mm:ss反而。

  2. 但是,此日期格式不会捕获时区,因此,如果您将日期字符串存储在 SQLite 数据库中,则应使用 UTC (GMT),如 SQLite 中所述日期和时间函数文档。

    NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    formatter.timeZone = [NSTimeZone timeZoneWithName:@"UTC"];
    formatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
    NSString *dateString = [formatter stringFromDate:today];
    

    如上所示,您可能还想指定locale这样日期的格式就不会根据设备的本地化设置而改变。

  3. 请注意,您可能会考虑使用timeIntervalSince1970将日期存储为REAL数据库中的值(而不是TEXT)。这可以更有效一些,并自动解决 UTC 问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQLite 存储、检索和比较 DATETIME 字段 的相关文章

随机推荐

  • 是否可以在 Oracle 的 regexp_replace 中引用第 10 个及后续替换字符串?

    在甲骨文的regexp replace函数 有一个参数replace string您可以在其中指定反向引用 1 to 9 有没有办法引用第 9 个之后的反向引用 甲骨文款待 10 as 1后面跟着一个字面意思0 不 最多九个 n 反向引用
  • Java 中 array.length() 的内部代码是什么?

    数组的第 10 个位置存储了什么 说 int array new int 10 假设我们存储了值array 0 to array 9 如果我要打印元素而不使用 array length or for int a array 我该如何继续 我
  • Matplotlib,绘制 pandas 系列:AttributeError:“tuple”对象没有属性“xaxis”

    我正在绘制 Pandas 系列数据 它记录了 1981 年每周 事件 的总和 该系列被命名为 weekly data 1981 03 16 1826 1981 03 23 1895 1981 03 30 1964 1981 04 06 19
  • 如何用scala'反序列化包含@@的json字符串

    正如标题已经解释的那样 我想反序列化一个包含以 开头的键的 json 字符串 遗憾的是 使用 我使用案例类的标准方法不再起作用了 val test key value case class Test key String not possi
  • 有没有办法使用 google for mkmapview 获取方向(只是路线)?

    我在 iOS 上使用 swift 并使用 MKMapView 我一直致力于为用户提供一个 从 到 文本字段 并让用户在 从 到 位置 之间拥有一种路线形式 我已经使用 Apple 的内置方向和地理编码 api 调用在 mkmapview 上
  • 迭代/循环 Objective C 中类的所有属性

    可能重复 循环访问类中的属性 问题是我在 UITableView 上的每一行上都有多个 UILabel 我需要将模型类的属性 当然是 N SStrings 映射到标签标题 由于有多个标签 超过 12 个 并且在我的项目中以后可能会增加 因此
  • 如何绑定到 ListBox 内与已指定的 ItemsSource 不同的源

    我在 HubSection 中有一个 ListBox 其 Items 绑定到通过后面的代码添加到我的 DefaulViewModel 中的 players 类 首先 我只是将一个 TextBox 绑定到我的类 players 的属性 Pla
  • 确定性地创建和标记 EC2 实例

    我正在创建 3 个 EC2 实例 随后迭代并标记每个实例 有时 标签请求会失败 尽管实例后来看起来正在运行 这可能是一个时间问题吗 创建实例后我应该等待几秒钟再标记它吗 是否有确定的方法来等待它开始 更新20140512 AWS 同时添加了
  • 如何在 TypeScript 中将值传递给 Context Provider?

    我正在尝试将我的反应脚本转换为打字稿 但在定义类型时遇到问题 export const inputListContext createContext
  • 使用 Bcrypt 密码验证登录

    我有一个网站 我正在使用 bcrypt 编写注册 登录系统 我已成功将注册详细信息和哈希密码插入数据库中 我的问题是如何使用此哈希密码对用户进行身份验证 以下是我使用的代码 注册动作 font face arial font
  • 如何将数组传递给 Rails 中的 fields_for?

    我想用fields for在关联中的记录子集上 我有一个Month模型 其中has many payments 但在我看来 以我的形式 我只想拥有fields for其中一些付款 例如 fields for month payments l
  • 简单的 for 循环需要解释

    Since i i是缩写i i i 以下代码 for var i 0 i lt 10 i console log i i 应该输出 1 0 because 0 0 0 i 0 2 2 because 0 1 1 i 2 3 6 becaus
  • Xcode - 基于Target导入具有相同名称的不同头文件

    我有一个具有多个目标的项目 每个目标都构建非常相似的应用程序版本 但具有不同的图像资源和 plist 对于 plists images 来说这很好 但我使用 ShareKit 和 Appirater 框架 它们的配置带有 defines 的
  • iOS 正在将 28.0KB 的一些未知数据从我的应用程序备份到 iCloud

    我的应用程序因未将 不备份 属性设置为我使用的两个内部文件 并存储在 Documents 中 而被拒绝 我已经设置了该属性 并且它不再备份这些文件 11 5MB 但它仍在备份 28kb 的一些数据 我从 Documents 文件夹中删除了所
  • C 中的函数指针如何工作?

    我最近对 C 中的函数指针有了一些经验 因此 按照回答自己问题的传统 我决定对基础知识做一个小总结 供那些需要快速深入了解该主题的人使用 C 中的函数指针 让我们从一个基本函数开始指向 int addInt int n int m retu
  • 如何创建表 AWS Athena --> 映射 Json 数组?

    如何为 Json 数组格式创建表 Athena AWS JSON 格式示例 Tapes Status AVAILABLE Used 0 0 Barcode TEST1217F7 Gateway Test Report UsedGB 0 0
  • 将 ASP.NET MVC 5 从 .NET 4.5 降级到 4.0

    坐着面对一个有趣的问题 服务器不支持 NET 4 5 客户端没有提到这一点 但该应用程序是使用 ASP NET MVC 5 编写的 仅在 NET 4 5 上运行 所以降级dot net就意味着降级ASP NET MVC版本 我们遇到的许多错
  • 展开转场不触发

    我学习得很快 并为我的大部分应用程序奠定了基础 我有以下故事板 应用故事板 一切正常 例如 我在添加课程视图控制器上有一个展开转场 当您按下 保存 并且您返回到 您的课程 视图控制器时 该控制器会触发 当您在我的课程视图控制器上时 您可以选
  • Checkedtextview 滚动Listview后选中/取消选中

    我正在使用 viewHolder 和 getview 在 listvew 中开发 checktextview 填充检查 取消检查状态绑定从数据库运行良好 但是 如果我选中项目然后滚动列表视图 它将返回取消选中 这是我的自定义适配器代码 pu
  • SQLite 存储、检索和比较 DATETIME 字段

    我真的很难在 Objective C 中比较 SQLite 查询中的日期 这就是我正在做的事情 存储日期 这个文件告诉我使用下面指定的日期格式 但它似乎不正确 我尝试使用yyyy MM dd hh mm ss但也没有成功 NSDate to