【问题标题】:Sqlite C/C++ API - Get timestamp value with select querySqlite C/C++ API - 使用选择查询获取时间戳值
【发布时间】:2012-10-12 04:55:00
【问题描述】:

我使用 sqlite3 C/C++ API 使用 SELECT 查询从表中检索行。我没有看到任何 sqlite3_column_timestamp() 在 sqlite3_step() 之后检索时间戳列值。如何获取时间戳值?

【问题讨论】:

  • SQLite 没有时间戳数据类型,因此请使用您在存储值时使用的任何类型(数字或文本/字符串)。

标签: sqlite


【解决方案1】:

SQLite 没有特殊的时间戳数据类型。

当你想使用任何 SQLite 的 date and time functions 时,你必须将时间戳存储在 formats supported by them 之一中,即像 YYYY-MM-DD HH:MM:SSHH:MM:SS 这样的字符串、朱利安日期数字或 Unix 时间戳号码。

您可以将表列类型声明为DATETIME,但SQLite 将忽略该类型; SQLite 总是允许将任何类型的值放在任何列中。这样的声明仅作为文档有用。

【讨论】:

    【解决方案2】:

    列/值访问器将仅具有与data types they support directly 对应的类型(NULLINTEGERREALTEXTBLOB)。

    您将使用TEXT 访问权限来获取/设置日期的列值。

    他们提供了一些helper functions within SQL,让您可以在查询中处理它们。

    我不熟悉 SQLite Manager,但我认为它只报告声明表的数据类型。

    在解析CREATE 语句时,sqlite 了解许多支持良好的数据类型的意图,并自动将它们映射到适合其内部存储结构的内容。例如,VARCHAR 将映射到 TEXT。我假设该列被声明为 DATETIME 而 sqlite 只是在内部将其映射到 TEXT

    【讨论】:

    • 我应该使用哪种数据类型来存储时间戳?我在 SQLite 管理器中看到了一个 DATETIME 类型。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-26
    • 1970-01-01
    • 1970-01-01
    • 2015-05-05
    • 2013-06-26
    • 2017-05-05
    相关资源
    最近更新 更多