我有一个要求,如果我输入时间戳(yyyy-mm-dd hh:mm:ss)说
2015-04-05 16:45:12
我需要将它转换为
2015-04-05 16:00:00
有没有一种优雅的方法在Teradata中执行此操作而不是提取小时然后将其与日期一起投射?
答案 0 :(得分:1)
不是从/向字符串转换两次,而是减去间隔可能更有效:
ts - (EXTRACT(MINUTE FROM ts) * INTERVAL '01' MINUTE)
- (EXTRACT(SECOND FROM ts) * INTERVAL '01' SECOND)
如果这是很多代码,只需将它放在SQL UDF中。
答案 1 :(得分:0)
一种方法是提取要保留值的 substr ,然后连接零分钟和秒。
例如,
SELECT concat(substr('2015-04-05 16:45:12', 1, 14), '00:00');
如果需要,可以将其转换回时间戳,这样您就可以将分钟和秒值设置为零的新时间戳值。