2016-06-02 4 views
0

私は日付型に解析する必要がある文字列としてかなり標準の日付があります。私は、書式マスクとして'YYYY-MM-DDTHH24:MI:SS'を使用していのPostgreSQL()

"2016-06-01T23:34:25+00:00" 

をし、このクエリの日付を取得して解析しようとする:

SELECT to_date('last_updated_on', 'YYYY-MM-DDTHH24:MI:SS') 
AS last_updated_on FROM locations 
limit 1 

何が起こることは、私はこのエラーを取得します

ERROR: invalid value ":2" for "MI" 
SQL state: 22007 
Detail: Value must be an integer. 

私はドキュメンテーションとそれがなぜ起こっているのかを調べるために全面的に見てきました。私は完全に困惑しています。私は

答えて

2

サラウンドに""付き書式文字列内TのPostgreSQL 9.4を使用してい

。日付の時間部分を保存する必要がある場合は、to_timestamp()を使用します。

SELECT to_date('last_updated_on', 'YYYY-MM-DD"T"HH24:MI:SS') 
AS last_updated_on FROM locations 
limit 1 

問題がT n個の文字列の途中であるように思われるタイムスタンプ

SELECT to_timestamp('last_updated_on', 'YYYY-MM-DD"T"HH24:MI:SS') 
AS last_updated_on FROM locations 
limit 1 
+0

ありがとうございます!私は「T」が犯人だと思っていたが、それを文字通り「T」と定義する方法を知らなかった –

4

での日付に変換します。これは、曳航作業を思わ:

SELECT to_date(replace('2016-06-01T23:34:25+00:00', 'T', ''), 'YYYY-MM-DD HH24:MI:SS') 

はしかし、あなたはおそらくto_timestamp()をしたい:

SELECT to_timestamp('2016-06-01T23:34:25+00:00', 'YYYY-MM-DD HH24:MI:SS') 

はまた、あなたがlast_updated_on周りの単一引用符を持っていることに注意してください。つまり、列名ではなく文字列として解釈されます。

+0

素晴らしい。ありがとう!ええ、私は質問を書くときに 'last_updated_on'を入れます。そこに入る価値は、私が質問の意味を明確にするために取り出したjsonbの値から来ています。 –