在Redshift中将数字日期时间转换为AM PM时间

时间:2017-05-17 15:33:27

标签: sql timestamp amazon-redshift type-conversion numeric

我有一个名为tran_datetime的字段,它是一个14位数字字段。

值存在于20130216131736 ...即2013-02-16 01:17:36 PM

在我的查询导出中,我需要将最后6位数转换为TimeStamp

这是我发现的最接近的版本。

(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

3 个答案:

答案 0 :(得分:2)

这对你有用。

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

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

答案 1 :(得分:0)

这会将其转换为时间戳:

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')

{{1}}

另见:

答案 2 :(得分:0)

基于John的例子,这里是实际修复此脚本的脚本......

errorPlacement: function(error, element) {
        if ( element.is(":radio") ) {                   
            error.insertAfter( element.parent().parent().parent().parent());
        }
        else { // This is the default behavior of the script for all fields
            error.insertAfter( element );
        }
 },