【发布时间】:2017-05-17 15:33:27
【问题描述】:
我有一个名为 tran_datetime 的字段,它是一个 14 位数字字段。
值存在为 20130216131736 ... 即 2013-02-16 01:17:36 PM
在我的查询导出中,我需要将最后 6 位数字转换为时间戳。
这是我发现的最接近的版本。
(SUBSTRING(tran_datetime,9,2) || ':' || SUBSTRING(tran_datetime,11,2) || ':' || SUBSTRING(tran_datetime,13,2)) ,
但这会将其返回为 13:17:36。我正在尝试找到将其转换为 01:17:36 PM 格式的方法。
这样的……
to_char((SUBSTRING(tran_datetime,9,2) || ':' || SUBSTRING(tran_datetime,11,2) || ':' || SUBSTRING(tran_datetime,13,2)), 'HH12:MI:SS')
或
cast((SUBSTRING(tran_datetime,9,2) || ':' || SUBSTRING(tran_datetime,11,2) || ':' || SUBSTRING(tran_datetime,13,2)) as TIMESTAMP)
但我尝试的大多数事情都会出错,最常见的是Timestamp out of range
【问题讨论】:
-
A
TIMESTAMP包括日期和时间。您想将Date组件设置为什么?您能解释一下您的用例吗?可能有更好的选择来说明您的使用方式。 -
嗨,约翰,我根本不需要日期。在我的查询中,我只需要从该字段中检索时间。
-
您能否提供更多关于您将如何使用时间的信息?例如,您会计算时间之间的差异,还是以某种方式显示时间?这可能会影响推荐的方法。
-
它将被放入报告中,然后分发给用户以验证任务开始的时间。
标签: sql timestamp amazon-redshift type-conversion numeric