Django数据时间字段

时间:2017-08-02 13:46:51

标签: django postgresql

我正在阅读PostgreSQL documentation,我发现Postgres没有datatime数据类型,但是当我运行./manage.py sqlmigrate myapp 0001_initial Django时实际生成了datetime } field:

CREATE TABLE "myapp_event" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "start" datetime NOT NULL);

所以我有点困惑。 datetime假设是timestamp吗?

更新: 我没有意识到我在SQLite数据库中使用了不同的设置文件。希望这个错误可能对其他人有用。

在PostgreSQL中它看起来像这样:

CREATE TABLE "myapp_event" ("id" serial NOT NULL PRIMARY KEY, "start" timestamp with time zone NOT NULL);

所以SQLite中的datetime在PostgreSQL中是timestamp with time zone

1 个答案:

答案 0 :(得分:0)

Postgres确实没有日期时间数据类型。它没有AUTOINCREMENT属性。 Django必须向您展示这些内容,将Pstgres timestamp转换为datetime并将SERIAL转换为AUTOINCREMENT

PS SERIAL本身也不是数据类型。

这里我将你的陈述改为Postgres:

t=# CREATE TABLE "myapp_event" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "start" datetime NOT NULL);
ERROR:  syntax error at or near "AUTOINCREMENT"
LINE 1: ... "myapp_event" ("id" integer NOT NULL PRIMARY KEY AUTOINCREM...
                                                             ^
t=# CREATE TABLE "myapp_event" ("id" SERIAL PRIMARY KEY, "start" datetime NOT NULL);
ERROR:  type "datetime" does not exist
LINE 1: ...E "myapp_event" ("id" SERIAL PRIMARY KEY, "start" datetime N...
                                                             ^
t=# CREATE TABLE "myapp_event" ("id" SERIAL PRIMARY KEY, "start" timestamp NOT NULL);
CREATE TABLE