【发布时间】:2012-10-12 04:55:00
【问题描述】:
我使用 sqlite3 C/C++ API 使用 SELECT 查询从表中检索行。我没有看到任何 sqlite3_column_timestamp() 在 sqlite3_step() 之后检索时间戳列值。如何获取时间戳值?
【问题讨论】:
-
SQLite 没有时间戳数据类型,因此请使用您在存储值时使用的任何类型(数字或文本/字符串)。
标签: sqlite
我使用 sqlite3 C/C++ API 使用 SELECT 查询从表中检索行。我没有看到任何 sqlite3_column_timestamp() 在 sqlite3_step() 之后检索时间戳列值。如何获取时间戳值?
【问题讨论】:
标签: sqlite
SQLite 没有特殊的时间戳数据类型。
当你想使用任何 SQLite 的 date and time functions 时,你必须将时间戳存储在 formats supported by them 之一中,即像 YYYY-MM-DD HH:MM:SS 或 HH:MM:SS 这样的字符串、朱利安日期数字或 Unix 时间戳号码。
您可以将表列类型声明为DATETIME,但SQLite 将忽略该类型; SQLite 总是允许将任何类型的值放在任何列中。这样的声明仅作为文档有用。
【讨论】:
列/值访问器将仅具有与data types they support directly 对应的类型(NULL、INTEGER、REAL、TEXT、BLOB)。
您将使用TEXT 访问权限来获取/设置日期的列值。
他们提供了一些helper functions within SQL,让您可以在查询中处理它们。
我不熟悉 SQLite Manager,但我认为它只报告声明表的数据类型。
在解析CREATE 语句时,sqlite 了解许多支持良好的数据类型的意图,并自动将它们映射到适合其内部存储结构的内容。例如,VARCHAR 将映射到 TEXT。我假设该列被声明为 DATETIME 而 sqlite 只是在内部将其映射到 TEXT。
【讨论】: