RedShift to_char 格式没有给出想要的结果

Posted

技术标签:

【中文标题】RedShift to_char 格式没有给出想要的结果【英文标题】:RedShift to_char format not giving desired results 【发布时间】:2014-09-04 19:48:12 【问题描述】:

我需要将我的时间戳转换为以下格式 YYYY-MM-DDTHH24:MI:SS.0。请注意中间的“T”。例如 2014-09-04T13:05:10.0.

我尝试了以下方法:

select to_char(timestamp,'YYYY-MM-DDTHH24:MI:SS.0') from table;

但是,RedShift 将“TH”解释为序数后缀 (http://docs.aws.amazon.com/redshift/latest/dg/r_Numeric_formating.html)。因此,我得到的结果类似于 2014-03-23RDH24:26:36.0。

因此,我在“T”之后添加了一个空格并尝试将空格修剪掉。

select trim(' ' FROM to_char(timestamp,'YYYY-MM-DDT HH24:MI:SS.0')) from table;

但是,修剪实际上并没有删除空间。我的结果就像 2014-03-23T 07:26:36.0。

我也尝试过使用反斜杠进行转义,但这也没有用。

如何实现不带空格的所需格式?

【问题讨论】:

【参考方案1】:
upper(to_char(GetDate(),'YYYY-MM-DDtHH24:MI:SS.0'))

也可以。

【讨论】:

【参考方案2】:

这最终奏效了

select concat(to_char(timestamp,'YYYY-MM-DDT'), to_char(timestamp,'HH24:MI:SS.0')) from table;

【讨论】:

以上是关于RedShift to_char 格式没有给出想要的结果的主要内容,如果未能解决你的问题,请参考以下文章

Redshift varchar 列时间转换为 12 小时格式

Redshift 中的列主要卸载

十进制数、to_char 和 Oracle

用逗号分隔格式化数字,oracle 中没有 TO_CHAR

oracle 函数to_char(数据,'FM999,999,999,999,990.00') 格式化数据(转)

如何将镶木地板格式的特定列加载到 Redshift 光谱中?