current_timestamp не существует в PostgreSQL? - PullRequest
0 голосов
/ 03 июля 2018

У меня есть база данных о 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 голосов
/ 03 июля 2018

Чтобы добавить столбец с текущей временной меткой по умолчанию, вы можете использовать тип 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')

Демо с 9,6

Демо с 10

0 голосов
/ 03 июля 2018

не распознает 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');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...