通过 FMDatabase 可读的 Date 的 GUI 将日期输入数据库

Posted

技术标签:

【中文标题】通过 FMDatabase 可读的 Date 的 GUI 将日期输入数据库【英文标题】:Date entry into database through GUI for Date which is readable by FMDatabase 【发布时间】:2012-01-07 19:56:00 【问题描述】:

在发布应用程序之前,我必须将一组事件输入数据库,以便应用程序准备好从该数据库中读取。

我看过一些类似这样的帖子,这些帖子解释了如何将 NSDate 输入数据库以便可以回读:

    iPhone SQLite date problem Persisting Dates to SQLite3 in an iPhone Application

现在,我想通过运行以下查询将日期输入数据库:

insert into VendorEvents (event_start, event_end, notes, event_name) values (date('2012-01-26'), date('2012-01-26'), 'Republic day of India is the day when our constitution was framed and put into practice', 'Republic day')

当我通过 MesaSQLite 应用程序运行此查询时,返回的结果与预期的一样完美:

select * from VendorEvents where ((event_start between '2011-12-01 00:00:00 +0000' and '2012-02-01 00:00:00 +0000') or (event_end between '2011-12-01 00:00:00 +0000' and '2012-02-01 00:00:00 +0000'))

但是当我通过应用程序内部的 FMDatabase 运行相同的查询时,没有返回任何记录。

我的数据库中 VendorEvents 中第一个和第二个字段的数据类型是“日期”类型。我输入数据的方式的唯一区别是使用 MesaSQLite 应用程序。那么,是否有任何错误导致我无法在 FMDatabase 中获得结果?

谢谢, 拉杰

【问题讨论】:

【参考方案1】:

使用date() 函数。试一试:

select * from VendorEvents 
where ((event_start between date('2011-12-01 00:00:00 +0000') and date('2012-02-01 00:00:00 +0000')) 
    or (event_end between date('2011-12-01 00:00:00 +0000') and date('2012-02-01 00:00:00 +0000')))

【讨论】:

以上是关于通过 FMDatabase 可读的 Date 的 GUI 将日期输入数据库的主要内容,如果未能解决你的问题,请参考以下文章

在 Mac OSX 上将 unix 纪元时间转换为人类可读的日期 - BSD

生成可读的日期函数,带有可选的日期差异

将人类可读的日期从 Epoch 转换为变量

如何使用人类可读的日期格式将BSON转换为JSON

格式化日期对象以显示人类可读的日期

如何使用 sed 将纪元转换为人类可读的日期时间