如何在 Redshift 中获取纪元时间?
Posted
技术标签:
【中文标题】如何在 Redshift 中获取纪元时间?【英文标题】:How to get epoch time in Redshift? 【发布时间】:2017-03-29 11:01:04 【问题描述】:在我的架构中,我有一个 created_on 字段。我想在插入时自动为其分配 EPOCH 时间值。如何实现?
【问题讨论】:
【参考方案1】:select date_part(epoch,sysdate)::int
如果我做了一个错误的假设,请发表评论,我会重新调整我的答案。
【讨论】:
【参考方案2】:在 PostgreSQL 上(从 redshift 被分叉)你会这样做:
ALTER TABLE sometable ALTER COLUMN created_on SET DEFAULT EXTRACT(EPOCH FROM now())
也许它也适用于红移。
【讨论】:
显然这是一个错误:ALTER COLUMN SET/DROP DEFAULT is not supported;我的桌子是空白的,所以我不介意从头开始创建一张。但是,EXTRACT 的列类型是 date_part。是否可以将其转换为整数?我使用纪元时间作为版本号。 我认为 date_part 只是 EXTRACT() 函数结果的默认名称。根据文档,redshift 中的返回类型应该是整数:docs.aws.amazon.com/redshift/latest/dg/r_EXTRACT_function.html 它与 PostgreSQL 不同,在 PostgreSQL 中,返回类型是真实的。所以你不需要强制转换它。【参考方案3】:RedShift 没有 now() 但有 getdate(),所以这将是获取 epoch 的表达式:
SELECT EXTRACT(EPOCH FROM GETDATE());
【讨论】:
【参考方案4】:SELECT EXTRACT(EPOCH FROM now());
【讨论】:
以上是关于如何在 Redshift 中获取纪元时间?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Redshift 中将时间戳(具有毫秒)转换为 EPOCH