如何在postgreSQL中将varchar转换为时间戳



我有如下数据,但列类型是Varchar:

2019-09-28T23:59:59.52Z

我假设52是毫秒,如果是的话…

我想将其转换为如下,并将列类型更改为时间戳:

2019-09-28 23:59:59.52

有人能告诉我如何在postgreSQL中进行转换吗?

编辑:我可以看到表中的数据为(因为列类型是varchar(:

2019-09-28T23:59:59.52Z

相反,我希望表中的数据显示为:

2019-09-28 23:59:59        ( and may be .52, if possible)

我想我也需要将列类型更改为时间戳,请也帮忙。

答案:

Tim提供了一个解决方案,你可以按照它来做。

但是,在我的情况下,它是prod-env,所以,我刚刚用更改了类型

ALTER TABLE my_table ALTER COLUMN my_column TYPE TIMESTAMP USING my_column::timestamp without time zone;

感谢

您的时间戳字符串文字已经采用了可以在Postgres:中直接转换的格式

SELECT '2019-09-28T23:59:59.52Z'::timestamp;  -- 2019-09-28 23:59:59.52

作为测试,让我们增加一天来确保它有效:

SELECT '2019-09-28T23:59:59.52Z'::timestamp + interval '1 day';
-- 2019-09-29 23:59:59.52

如果您想使用另一列的字符串数据实际添加一个新的时间戳列,请尝试:

ALTER TABLE yourTable ADD COLUMN new_ts TIMESTAMP;
UPDATE yourTable SET new_ts = old_ts::timestamp;
ALTER TABLE yourTable DROP COLUMN old_ts;
ALTER TABLE yourTable RENAME COLUMN new_ts TO old_ts;  -- optional

如果希望新的真正时间戳列与旧的文本时间戳列具有相同的名称,那么最后一条ALTER语句是可选的。

相关内容

  • 没有找到相关文章

最新更新