PostgreSQL中不存在current_timestamp吗?

时间:2018-07-03 14:23:30

标签: postgresql

我有一个有关Heroku的数据库。日期将自动填充一个字段。我尝试使用current_timestamp,但似乎不起作用。

这是数据库的架构。

drop table if exists users;
create table users (
  id int GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
  name varchar,
  email varchar,
  username varchar,
  password varchar,
  register_date CURRENT_TIMESTAMP() not null
);

以下是查询:

cur.execute("INSERT INTO users(name, email, username, password) VALUES(%s, %s, %s, %s)", (name, email, username, password))

这是错误:

ERROR:  syntax error at or near "CURRENT_TIMESTAMP"
LINE 7:   register_date CURRENT_TIMESTAMP() not null

2 个答案:

答案 0 :(得分:2)

无法识别CURRENT_TIMESTAMP(),这就是为什么您必须使用CURRENT_TIMESTAMP(不带括号)的原因。下一个创建表查询必须为您工作:

create table users (
  id int GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
  name varchar,
  email varchar,
  username varchar,
  password varchar,
  register_date timestamp default CURRENT_TIMESTAMP not null
);

要检查其是否有效,只需运行来自postgres REPL的下一个查询:

insert into users(name, email, username, password)
values('n', 'e@e.com', 'un', 'pwd');

答案 1 :(得分:0)

要添加具有默认当前时间戳的列,可以使用TIMESTAMP类型,默认值为NOW()

create table users (
  id int GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
  name varchar,
  email varchar,
  username varchar,
  password varchar,
  register_date TIMESTAMP DEFAULT NOW()
);

样本数据

INSERT INTO users(name, email, username, password)
VALUES('Foo', 'foo@bar.com', 'bar', 'foobar')

Demo with 9.6

Demo with 10