https://en.wikipedia.org/wiki/Unix_timeUnix纪元是
开始(1970 00:00:00 1月1日)
所以,如果你不指定的世纪,但只是最后YY
它将从00:00:00 1 January
和21世纪前YY
等于70
20世纪。如果你想让它去猜测20世纪要么追加一年,你做什么,或指定CC
,如:
t=> select
to_timestamp('1JAN70', 'ddmonYY')
, to_timestamp('31DEC69', 'ddmonyy')
, to_timestamp('31DEC69 20', 'ddmonyy cc');
to_timestamp | to_timestamp | to_timestamp
------------------------+------------------------+------------------------
1970-01-01 00:00:00+00 | 2069-12-31 00:00:00+00 | 1969-12-31 00:00:00+00
(1 row)
https://www.postgresql.org/docs/current/static/functions-formatting.html
在从字符串转换成timestamp或日期,CC(世纪)如果存在YYY,YYYY或Y,YYY字段,则会忽略 字段。如果CC与YY或Y一起使用 ,那么该年计算为指定的 世纪中的年份。如果指定世纪但年不是,则假定本世纪的第一年。
更新
所以你的情况,你应该做的水木清华这样的:
vao=# create table arasu (member_birth_date character(9)); insert into arasu values ('28JUN80'),('25APR48');
CREATE TABLE
INSERT 0 2
vao=# select to_timestamp(member_birth_date||' 20', 'ddmonYY cc') from arasu;
to_timestamp
------------------------
1980-06-28 00:00:00+03
1948-04-25 00:00:00+03
(2 rows)
TO_TIMESTAMP(birth_date, 'DDMONYYYY')给了我喜欢“0080-06-28 00的值: 00:00 + 00“和”0048-04-25 00:00:00 + 00“ –
您可以试试吗?选择to_timestamp('25APR48','ddmonyy')。对我来说,结果集是“2048-04-25 00:00:00 + 00”。我期待它开始于1948年 –