如何在 Redshift 中将时间戳(具有毫秒)转换为 EPOCH

Posted

技术标签:

【中文标题】如何在 Redshift 中将时间戳(具有毫秒)转换为 EPOCH【英文标题】:How do I convert Timestamp (having milliseconds) to EPOCH in Redshift 【发布时间】:2020-04-13 08:56:14 【问题描述】:

如何将时间戳(以毫秒为单位)转换为纪元

例如,

Timestamp1 - 2019-10-20 11:43:47.298
Timestamp2 - 2019-10-20 11:43:47.469

使用 EPOCH 为两个时间戳提供相同的结果,即使它们是不同的时间戳(不同的毫秒)

查询-

extract('epoch' from timestamp '2019-10-20 11:43:47.298')::bigint * 1000
extract('epoch' from timestamp '2019-10-20 11:43:47.469')::bigint * 1000

Result - 1571571827000

我想要不同的结果,因为它们有不同的时间戳

【问题讨论】:

【参考方案1】:

如果您不想丢失毫秒精度,请不要转换为 bigint

select
    extract('epoch' from timestamp '2019-10-20 11:43:47.298') * 1000 epoch1,
    extract('epoch' from timestamp '2019-10-20 11:43:47.469') * 1000 epoch2

Demo on DB Fiddle

纪元1 |纪元2 :------------ | :------------ 1571571827298 | 1571571827469

【讨论】:

以上是关于如何在 Redshift 中将时间戳(具有毫秒)转换为 EPOCH的主要内容,如果未能解决你的问题,请参考以下文章

在 Spark (Scala) 中将时间戳转换为字符串而不会丢失毫秒

无法在 Amazon Redshift 中将时间戳转换为日期

如何在Oracle中将时间戳转化为日期格式

具有毫秒精度的时间戳:如何将它们保存在 MySQL 中

如何创建具有毫秒粒度的 Python 时间戳?

怎么在Oracle中将时间戳转化为日期格式