2016-07-07 1 views
16
INSERT into Group (Name,CreatedDate) VALUES ('Test',UTC_TIMESTAMP(), 1); 

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

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 в вышеуказанном формате?

+0

Может искать 'CURRENT_TIMESTAMP'or даже' NOW() '. есть, по крайней мере, прецедентные аргументы первому. Таким образом, 'CURRENT_TIMESTAMP (3)' будет выдавать 3 младших разряда (миллисекундное разрешение) – Dilettant

+1

... Форматирование через SET DATESTYLE, например. at: [в postgres, можете ли вы установить форматирование по умолчанию для отметки времени, по сеансу или по всему миру?] (http://stackoverflow.com/questions/8723574/in-postgres-can-you-set-the-default-formatting -for-a-timestamp-by-session-or-g) или в официальных отчетах postgres – Dilettant

+3

столбцы timestamp' do *** нет *** имеют «формат». Любое форматирование, которое вы видите, применяется клиентом SQL, который вы используете. Измените конфигурацию вашего SQL-клиента или используйте правильную функцию форматирования, если вы хотите другой формат _display_. –

ответ

0

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

24

timestamp (или date или time столбцы) делают НЕ имеют «формат».

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


Для вставки текущего времени использования current_timestampas documented in the manual:

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

+0

Если я использую это, я получаю ошибку ниже, так как моя дата - формат timestamp. столбец «createddate» имеет временную метку типа без часовой пояс, но выражение имеет тип text – Shesha

+0

@Shesha Не используйте это в запросе 'insert'. В вашей 'insert' используйте' current_timestamp' –

Смежные вопросы