2016-07-07 9 views
0

という名前の列に [02/Jun/2016:23:58:30 +0000]という形式の日付/時刻文字列を含むテーブルがあります。to_date()で文字列を日付に変換する

私はselect文でto_date(datetimestamp, 'DD/Mon/YYYY:HH24:MM:SS')を使用してこれを日付に変換しようとしていますが、フォーマットが無効です。それがUTCビットか、それが何かを混乱させているのかどうかは分かりません。正しい構文は何ですか?

ありがとうございます!

+0

それはTO_DATE( '2016年6月2日午後11時58分(ステートメントでなければなりません。 30 '、' yyyy/mm/dd hh24:mi:ss ')); – unixmiah

+0

@unixmiah nope :(まだ無効なフォーマットエラーが表示される – Nicros

+0

次のようなものを試してみてください:SELECT TO_CHAR(dateColumn、 'YYYY-MM-DD HH24:MI:SS')テーブルから: – unixmiah

答えて

0

to_timestampはタイムゾーン情報を許可しないため、少し複雑です。私はこのクエリが出ている

WITH d(part) AS 
    (SELECT regexp_matches(
      '02/Jun/2016:23:58:30 +0000', 
      '^([^ ]*) ([-+]?\d\d)(\d\d)$' 
      ) 
    ) 
SELECT 
    CAST (to_timestamp(d.part[1], 'DD/Mon/YYYY:HH24:MI:SS') 
       AT TIME ZONE (d.part[2] || ':' || d.part[3]) 
     AS timestamp with time zone) 
    AS converted 
FROM d; 

     converted 
------------------------ 
2016-06-02 21:58:30+02 
(1 row) 

(。私はタイムゾーンUTC + 02時午前)

0
select to_date('02/Jun/2016:23:58:30 +0000', 'DD/Mon/YYYY:HH24:MI:SS'); 

| to_date | 
|------------| 
| 2016-06-02 | 
+0

時間部分とタイムゾーンが失われますので、もっと頑張ってください。 –

+0

私は知っていますが、 –

関連する問題