【问题标题】:Convert Numeric Date Time into AM PM Time in Redshift在 Redshift 中将数字日期时间转换为 AM PM 时间
【发布时间】: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


【解决方案1】:

这应该适合你。

select to_char(cast('131736' as time),'HH12:MI:SS AM')

如果我做了一个错误的假设,请发表评论,我会重新调整我的答案。

【讨论】:

  • 但是我在哪里输入我的字段名称?我不需要只转换 1 次,我需要从 tran_datetime 列转换所有时间。
  • @alexlunar - 您可以使用 substring(tran_datetime,9,13) 或者 John 的解决方案也可以。
【解决方案2】:

这会将其转换为时间戳:

select to_timestamp(20130216131736::text, 'YYYYMMDDHH24MISS')

输出:

2013-02-16 13:17:36+00

获取该输出,这将为您提供所需的格式:

select to_char(to_timestamp(20130216131736::text, 'YYYYMMDDHH24MISS'), 'HH12:MI:SS AM')

输出:

01:17:36 PM

要在查询中使用它,如果字段是when

select to_char(to_timestamp(when::text, 'YYYYMMDDHH24MISS'), 'HH12:MI:SS AM')

另见:

【讨论】:

  • 谢谢你,约翰,一旦我用我的实际字段名称替换了 20130216131736,它确实可以这样工作。
  • 嗨@alexlunar,如果这个或任何答案解决了您的问题,请点击复选标记考虑accepting it。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。没有义务这样做。
  • 我做了,但它说它不会显示,因为我的声望少于 15 个
【解决方案3】:

根据 John 的示例,这里是实际修复此问题的脚本...

to_char(to_timestamp(act_veh.whse_lbr_tran_datetime::text, 'YYYYMMDDHH24MISS'), 'HH:MI:SS AM')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-19
    • 1970-01-01
    • 1970-01-01
    • 2018-01-21
    • 2021-04-01
    • 2011-12-29
    • 1970-01-01
    • 2017-01-16
    相关资源
    最近更新 更多