【问题标题】:I try to convert SQLite database to Postgres, I dont know DATETIME equal for postgres database我尝试将 SQLite 数据库转换为 Postgres,但我不知道 postgres 数据库的 DATETIME 是否相等
【发布时间】:2021-04-01 21:14:11
【问题描述】:
我尝试将 SQLite 数据库转换为 Postgres,我不知道 postgres 数据库的 DATETIME 是否相等
整行是:
CREATE TABLE log
(
id SERIAL PRIMARY KEY NOT NULL UNIQUE,
date DATETIME,
msg TEXT
);
【问题讨论】:
标签:
postgresql
sqlite
sqldatatypes
【解决方案1】:
SQLite 没有专门用于存储日期的存储类
和/或时间。相反,SQLite 的内置日期和时间函数
能够将日期和时间存储为 TEXT、REAL 或 INTEGER
价值观:
TEXT 作为 ISO8601 字符串 ("YYYY-MM-DD HH:MM:SS.SSS")。像朱利安一样真实
天数,自 11 月格林威治中午以来的天数
公元前 4714 年 2 月 24 日根据预知的公历。整数
作为 Unix 时间,自 1970-01-01 00:00:00 UTC 以来的秒数。
取自https://sqlite.org/datatype3.html
但在 Postgres 中,您可以使用 timestamp/timestamptz 数据类型,这在 here 上很容易演示
还有表格代码似乎很奇怪
id SERIAL PRIMARY KEY NOT NULL UNIQUE
为什么要同时使用主键和唯一键?
您可以在 Postgres 中使用以下代码
CREATE TABLE log
(
id SERIAL PRIMARY KEY,
date timestamp,
msg TEXT
);
【解决方案2】:
您可以使用 Postgresql 的 DATE or TIMESTAMP data type 也存储时间。
此外,您可以使用VARCHAR(n) 而不是TEXT 作为msg 的数据类型,除非您不知道该列中存储的值的最大长度:
CREATE TABLE log (id SERIAL PRIMARY KEY, date DATE, msg VARCHAR(255));