在Postgres中将日期从时间戳转换为纪元

时间:2018-10-15 18:47:10

标签: sql postgresql

我需要通过PostgreSQL查询将一堆日期(例如2017-04-22 02:25:26.830)一次性转换为unix纪元格式

我正在尝试以下版本:

UPDATE items
SET processed_date = date_part('epoch', timestamp processed_date)
WHERE source = 'mysourcevalue'

该字段为文本,应返回文本

2 个答案:

答案 0 :(得分:0)

尝试一下

UPDATE items
SET processed_date = timestamp 'epoch' + processed_date/1000 * interval '1 second'
WHERE source = 'mysourcevalue'

答案 1 :(得分:0)

我不能从您的问题中看出“日期”是字符串还是时间戳。但是这些可以满足您的要求:

select v.*,
       extract(epoch from datestr::timestamp),
       date_part('epoch', datestr::timestamp)
from (values ('2017-04-22 02:25:26.830')) v(datestr)

您应该能够:

UPDATE items
    SET processed_date = date_part('epoch', processed_date::timestamp)::text
WHERE source = 'mysourcevalue';

我很确定Postgres会自动将数字转换回字符串,但是明确表示很好。