7

PostgreSQLの場合:次のように変換stringtimestampますto_timestamp():

select * from ms_secondaryhealthcarearea
where to_timestamp((COALESCE(update_datetime, '19900101010101'),'YYYYMMDDHH24MISS') 
    > to_timestamp('20121128191843','YYYYMMDDHH24MISS')

しかし、私はこのエラーが発生します:

ERROR:  syntax error at end of input
LINE 1: ...H24MISS') >to_timestamp('20121128191843','YYYYMMDDHH24MISS')
                                                                       ^
********** Error **********

ERROR: syntax error at end of input
SQL state: 42601
Character: 176

なんで?を に変換する方法stringtimestamp?

4

4 に答える 4

8

開き角かっこが多すぎます。これを試して:

select * 
from ms_secondaryhealthcarearea 
where to_timestamp(COALESCE(update_datetime, '19900101010101'),'YYYYMMDDHH24MISS') >to_timestamp('20121128191843','YYYYMMDDHH24MISS')

to_timestampに2つの開き角かっこがあります。

where to_timestamp((COA.. -- <-- the second one  is not needed!
于 2012-11-28T13:02:39.207 に答える
6

@ppeterkaは構文エラーを指摘しました。

差し迫った問題は、なぜtimestampデータを文字列として保存するのかということです。状況が許せば、列を適切な型に変換することを検討してください。

ALTER TABLE ms_secondaryhealthcarearea
ALTER COLUMN update_datetime TYPE timestamp
USING to_timestamp(update_datetime,'YYYYMMDDHH24MISS');

またはtimestamptz、要件に応じて - を使用します。

于 2012-11-28T13:34:05.443 に答える