如何在 SQLite 中将 int(UNIX 时间戳)转换为日期时间?

How can I convert an int (UNIX timestamp) to datetime in SQLite?

我必须在 SQL 中创建一个 table(我正在使用 IntelliJ 和 Java),并且 table 必须遵守以下限制。

table 将包含以下列:

除此之外,我们还有以下限制:

所以我的问题是,在创建 table

时,我如何才能尊重我上面所说的所有限制

注意:这是我的作业,除了 table 之外我不能添加任何东西,所以我需要遵守创建 table 的所有限制。

据我所知,Unix格式是指Unix纪元格式,即自1970-01-01以来的秒数。这将表示为一个数字:

publication_date int default 1556399472

也就是说,我真的会推荐使用 built-in datetime 数据类型:

publication_date datetime default '2019-04-27 21:11:12'

需要时很容易转换为 Unix 纪元。

publication_date 的数据类型必须是 INTEGER 并且此列的默认值必须是 1556399472,这是 27 April 2019 21:11:12.[=33 的等效时间戳=] 在 SQLite 中将日期存储为整数没有问题,因为使用 'unixepoch' 修饰符和 Date And Time Functions of SQLite.
很容易检索可读日期 例如:

SELECT DATETIME(1556399472, 'unixepoch')

returns:

2019-04-27 21:11:12

SQLite 中也没有数据类型VARCHAR。你应该使用 TEXT.

所以你的table的创建语句可以是:

CREATE TABLE IF NOT EXISTS posts (
  title TEXT,
  news_description TEXT UNIQUE NOT NULL,
  publication_date INTEGER NOT NULL DEFAULT 1556399472,
  PRIMARY KEY(title)
);

如果您希望 NOT NULL 可以为空,您可以从 publication_date 的定义中删除它。