微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

postgresql 8.0根据时间戳获取小时的开始时间

如何解决postgresql 8.0根据时间戳获取小时的开始时间

我正在使用 postgresql 8.0 ,其中有一个列,该列是距历元毫秒的时间戳(但以文本形式存储在表中)。我想确定此时间戳记的开始时间。我无法想到干净的方法

表结构


id (varchar(52)) | Name(varchar(100)) | UpdateTime (varchar(20))
1                | Robin              |  1598051512000
2                | Sally              |  1628734800000

我的思维过程是使用to_timestamp()。但是,它不接受BigInt。因此,想法是使用substring()丢弃updateTime中值的最后3个字符,然后将其传递给to_timestamp()

例如使用select substring('1598051512000',1,length('1598051512000') - 3));

但是,这似乎越来越令人困惑。有没有一种更清洁的方法可以根据时间戳开始时间?

预期的输入输出

1598051512000  =  2020-08-21T23:00:00Z
1628734800000  =  2020-08-12T02:00:00Z

解决方法

您可以使用日期算术,然后使用date_trunc()

select
    t.*,date_trunc(
        'hour',date '1970-01-01' + '1598051512000'::bigint / 1000 * '1 second'::interval
    ) UpdateHour
from mytable t

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。