teradata:将smallint转换为时间
好的,我看到了这个post,并尝试了所建议的内容,但这似乎不适用于我。感谢帮助!谢谢!teradata:将smallint转换为时间
以下是各列数据类型:
:COLUMN_NAMES col_dt [DATE]col_tm [SMALLINT]
数据样本:
col_dt: 2017-08-10
col_tm: 1,630
这里是我的代码片段。我想结合了列到一个使用下面的代码:
(trim(col_dt) || ' ' ||
right('0' + convert(varchar(10), col_tm/100),2) + ':' +
right('0' + convert(varchar(10),col_tm%100),2)) as col_dtmstp,
你可以施放col_dt
的时间戳,导致半夜,然后双击投col_tm
到特林第一,然后到interval
:
Cast(col_dt AS TIMESTAMP(0))
+ Cast(Trim(col_tm (Format '99:99')) AS INTERVAL HOUR TO MINUTE)
谢谢@dnoeth。你提供的解决方案工作。然而,我在问题(我的道歉)中错误地提到col_date格式有'YYYY-MM-DD';取而代之的是'dd/mm/yyyy'。我所有的其他列都是'YYYY-MM-DD'格式,我更喜欢col_date以相同的方式显示。 –
@ k.learn:当'col_dt'是'date'时,不需要做任何事情,因为时间戳的默认格式已经是'yyyy-mm-dd hh:mi:ss' – dnoeth
在你提到的职位,他们所使用的是没有内置功能的Teradata SQL right
功能。您可以使用CAST
函数。
以下是将在数据类型TIMESTAMP
中生成所需结果的查询。
SELECT Cast(Trim('2017-08-10'
|| ' '
||Trim(Cast(1630/100 AS CHAR(10)))
|| ':'
|| Trim(Cast(1630 MOD 100 AS CHAR(10)))
|| ':00') AS TIMESTAMP(0) Format 'yyyy-mm-ddBhh:mi:ss');
它成功通过Teradata SQL Assistant和bteq测试。您可以使用type[expression]
函数确认其数据类型。
语法错误:预期的东西之间的“||”和'right'关键字 –