首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PostgreSQL中将字符串转换为日期和时间

在PostgreSQL中将字符串转换为日期和时间
EN

Stack Overflow用户
提问于 2016-03-08 15:07:26
回答 1查看 2.7K关注 0票数 0

我在GreenPlum (PostgreSQL)中有一个表,其中包含所有字段作为sting,我想编辑这些类型:

为此,我创建了一个视图:

代码语言:javascript
复制
CREATE VIEW typed_view AS

SELECT CAST(sid AS bigint), CAST(gid AS bigint),

..。

但是我对日期和时间字段有问题,我尝试了这个命令,但是它没有工作:

代码语言:javascript
复制
 to_utc_timestamp(from_unixtime(unix_timestamp(eventdatetime,"yyyy-MM-dd

HH:mm:ss“),'UTC')作为事件时,

之后,我尝试了PostgreSQL表示法:

代码语言:javascript
复制
to_timestamp(eventdatetime, 'YYYY Mon DD HH24 MI SS') AS eventdatetime,

但还是不起作用。

有人知道怎么转化吗?

我还有一个命令不起作用:

代码语言:javascript
复制
CASE WHEN fix = "True" THEN TRUE ELSE FALSE END AS fix,

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-08 19:35:12

您没有提供示例数据,所以我假设您的数据看起来像"YYYY HH24 MI SS“。所以2016年1月4日下午2: 15的时候,你的数据看起来就像是'2016 01月04 14 15 20‘。因此,对于这个示例数据,转换如下所示:

代码语言:javascript
复制
gpadmin=# select to_timestamp('2016 Jan 04 14 15 20', 'yyyy mon dd hh24 mi ss') as col1;
          col1          
------------------------
 2016-01-04 14:15:20-05
(1 row)

这是一个时间戳,它还包括对我的服务器来说是-5的时区偏移量。要将其转换为没有时区的时间戳,只需添加::timestamptz。

代码语言:javascript
复制
gpadmin=# select to_timestamp('2016 Jan 04 14 15 20', 'yyyy mon dd hh24 mi ss')::timestamp as col1;
        col1         
---------------------
 2016-01-04 14:15:20
(1 row)

关于这一点非常重要的一点。将数据从字符串转换为不同的数据类型是非常昂贵的。这在所有数据库中也是一样的。与其对每个SELECT语句执行转换,不如只花费一次此转换的费用。因此,我还建议您将此转换具体化为物理表,而不是使用视图。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35870929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档