如何在 SQLite 中将 int(UNIX 时间戳)转换为日期时间?
How can I convert an int (UNIX timestamp) to datetime in SQLite?
我必须在 SQL 中创建一个 table(我正在使用 IntelliJ 和 Java),并且 table 必须遵守以下限制。
table 将包含以下列:
- title - 需要能够存储字母、数字和特殊字符
- news_description - 需要能够存储时事通讯的文本
- publication_date - 需要能够存储整数(在 UNIX 系统中)
除此之外,我们还有以下限制:
仅当 table 不存在时才会创建 table
主键就是标题
2 份简报不能有相同的描述
news_description不能为空
如果未指定 publication_date,我需要使用 UTC 将其设置为 2019 年 4 月 27 日 21:11:12,日期必须为 UNIX 格式
CREATE TABLE IF NOT EXISTS posts (
title VARCHAR,
news_description TEXT UNIQUE NOT NULL,
publication_date "I don't know what I should write here in order to respect the last restriction"
PRIMARY KEY(title)
);
所以我的问题是,在创建 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
的定义中删除它。
我必须在 SQL 中创建一个 table(我正在使用 IntelliJ 和 Java),并且 table 必须遵守以下限制。
table 将包含以下列:
- title - 需要能够存储字母、数字和特殊字符
- news_description - 需要能够存储时事通讯的文本
- publication_date - 需要能够存储整数(在 UNIX 系统中)
除此之外,我们还有以下限制:
仅当 table 不存在时才会创建 table
主键就是标题
2 份简报不能有相同的描述
news_description不能为空
如果未指定 publication_date,我需要使用 UTC 将其设置为 2019 年 4 月 27 日 21:11:12,日期必须为 UNIX 格式
CREATE TABLE IF NOT EXISTS posts ( title VARCHAR, news_description TEXT UNIQUE NOT NULL, publication_date "I don't know what I should write here in order to respect the last restriction" PRIMARY KEY(title) );
所以我的问题是,在创建 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
的定义中删除它。