【问题标题】: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));
    

    【讨论】:

      猜你喜欢
      • 2011-09-03
      • 1970-01-01
      • 2013-02-09
      • 2021-10-16
      • 2011-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多