POSTGRESQL преобразовать дату в метку времени unix int

У меня есть таблица matches со столбцом deleted_date типа date, поэтому его значения сейчас выглядят как 2020-12-30. Я хочу изменить тип этого столбца с даты на int, чтобы вместо этого я мог хранить временные метки unix.

Я пытаюсь сделать это, выполнив эту команду:

ALTER TABLE matches ALTER COLUMN deleted_date TYPE INT USING deleted_date::INT;

Но выполнение этой команды дает мне ошибку:

 error: cannot cast type date to integer

Есть ли способ, которым я могу сказать POSTGRESQL, чтобы он просто заменил любые значения даты delete_by новой пустой целочисленной переменной 'null'?


person Martin    schedule 31.12.2020    source источник
comment
Отвечает ли это на ваш вопрос? преобразовать дату в целое число в postgresql   -  person astentx    schedule 31.12.2020
comment
Также обратите внимание, что его значение выглядит следующим образом не имеет никакого отношения к типу данных или хранению. Это задача отображения, и вы всегда должны заботиться об этой задаче только во время отображения на стороне приложения.   -  person astentx    schedule 31.12.2020
comment
Почему? Целое число — один из наихудших возможных типов данных для даты или временной метки.   -  person Frank Heikens    schedule 31.12.2020


Ответы (2)


Вы можете попробовать ниже изменить заявление для вашего требования:

ALTER TABLE matches ALTER COLUMN deleted_date TYPE INT USING extract(epoch from deleted_date)::INT;

person Akhilesh Mishra    schedule 31.12.2020

Если вы хотите сохранить метку времени (дата + время), вы должны преобразовать столбец в тип timestamp или даже лучше timestamptzне используйте целые числа для хранения меток времени.

alter table matches alter deleted_date type timestamp 
person a_horse_with_no_name    schedule 31.12.2020