Как вставить текущее время в запрос postgresql insert

INSERT into Group (Name,CreatedDate) VALUES ('Test',UTC_TIMESTAMP(), 1);

Это запрос, который я использовал для mysql для вставки текущего времени. Когда я использую это в postgresql, я становлюсь ниже ошибки.

    HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
********** Error **********

ERROR: function utc_timestamp() does not exist
SQL state: 42883

Я пробовал, как показано ниже, используя now(), однако он вставляет, как "2016-07-07 17:01:18.410677". Мне нужно вставить в формат 'yyyymmdd hh:mi:ss tt'.

INSERT into Group (Name,CreatedDate) VALUES ('Test',UTC_TIMESTAMP(), 1);

Как вставить текущее время даты в запрос вставки postgresql в вышеприведенном формате?

Ответы

Ответ 1

Столбцы

timestamp (или date или time) имеют НЕ "формат".

Любое форматирование, которое вы видите, применяется клиентом SQL, который вы используете.


Чтобы вставить текущее время, используйте current_timestamp как описано в руководстве:

INSERT into "Group" (name,createddate) 
VALUES ('Test', current_timestamp);

Чтобы отобразить это значение в другом формате, измените конфигурацию вашего SQL-клиента или отформатируйте значение при выборе данных:

select name, to_char(createddate, ''yyyymmdd hh:mi:ss tt') as created_date
from "Group"

Для psql (клиент командной строки по умолчанию) вы можете настроить формат отображения с помощью параметра конфигурации DateStyle: https://www.postgresql.org/docs/current/static/runtime-config-client.html#GUC-DATESTYLE

Ответ 2

Вы можете, конечно, форматировать результат current_timestamp(). Пожалуйста, ознакомьтесь с различными функциями форматирования в официальной документации.