如何解决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 举报,一经查实,本站将立刻删除。