Вы можете использовать функцию TO_CHAR
с соответствующей строкой формата.
Чтобы точно воспроизвести поведение YEARDATE, дата должна быть усечена до начала содержащей недели.
SELECT TO_CHAR(DATE_TRUNC('week', NOW()), 'YYYYWW')
-- outputs:
201826
и, используя даты вашего примера:
WITH dates(dt) AS (
VALUES
('2014-12-31 00:00:00'::timestamp),
('2016-01-05 00:00:00'::timestamp),
('2016-01-09 00:00:00'::timestamp),
('2016-06-08 14:40:37'::timestamp)
)
SELECT dt, TO_CHAR(DATE_TRUNC('week', dt), 'YYYYWW') yrwk
FROM dates;
-- outputs:
dt | yrwk
---------------------+--------
2014-12-31 00:00:00 | 201452
2016-01-05 00:00:00 | 201601
2016-01-09 00:00:00 | 201601
2016-06-08 14:40:37 | 201623