【发布时间】:2017-04-05 08:54:09
【问题描述】:
此查询:select EXTRACT(HOUR FROM 1435047532) as hour from TABLENAME;
返回此错误:“提取源的提取字段无效”。
我正在尝试从给定的时间戳中提取小时。也许问题是时间戳字段的格式是 NUMBER 而不是 TIMESTAMP?
【问题讨论】:
-
1435047532 只是一个数字,您需要定义如何将其解释为日期/时间。例如。是自 Unix 纪元以来的秒数还是自 1600-01-01T00:00:00 以来的 10ns 间隔?
-
@Richard 我编辑了指定格式为 NUMBER amd 的问题,询问这是否是问题所在。所以你是对的,它是。这个数字是从 Unix 时代开始的秒数。如何将它们转换为正确的格式?
-
当你真的想要一个时间戳的时候,你为什么还要存储这样一个unix数字呢?我建议您更改表格设计并切换到
date(实际上是一个日期时间)或timestamp(即创建一个新列,计算ist 值并删除旧列)。 -
@ThorstenKettner 我做不到。我无权更改结构上的任何内容,我可以查询。
-
如果有人犯了设计错误而其他人因此受苦,那就太糟糕了。你至少应该让他们知道这一点,以便他们知道并考虑改变这一点。
标签: sql oracle timestamp extract