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

これは、現在の日付時刻を挿入するためにmysqlで使用したクエリです。 これをpostgresqlで使用しているときに、私は以下のエラーが発生しています。postgresqlの挿入クエリで現在のdatetimeを挿入する方法

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 

しかし私はそれが"2016-07-07 17:01:18.410677"ように挿入され、now()を用いて以下のように試みました。 'yyyymmdd hh:mi:ss tt'フォーマットに挿入する必要があります。

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

上記の形式でpostgresqlの挿入クエリに現在の日付時間を挿入するにはどうすればよいですか?

+0

「CURRENT_TIMESTAMP」または「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'カラムは***ではありません***は"フォーマット "を持っています。表示される書式は、使用しているSQLクライアントによって適用されます。別の_display_形式を使用する場合は、SQLクライアントの構成を変更するか、適切な書式設定機能を使用してください。 –

答えて

0

もちろん、current_timestamp()の結果をフォーマットすることはできます。 公式documentationにさまざまな書式設定機能を見てください。

24

timestamp(またはdateまたはtimeカラム)do には「a形式」があります。

表示されているフォーマットは、使用しているSQLクライアントによって適用されます。異なるフォーマットの値は、あなたのSQLクライアントの構成を変更したり、データを選択する際に値をフォーマットすること

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

に表示

current_timestamp as documented in the manualを使用する現在の時刻を挿入するには


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

これを使用すると、日付がタイムスタンプ形式であるため、うごめきエラーになります。 "createddate"列はタイムゾーンのないタイムスタンプ型ですが、式はテキスト型です – Shesha

+0

@Shesha 'insert'クエリでは使用しないでください。あなたの 'insert'では' current_timestamp'を使います –

関連する問題