将Timestamp字段的Minute和Second组件设置为0

时间:2015-04-24 11:31:27

标签: sql database timestamp teradata type-conversion

我有一个要求,如果我输入时间戳(yyyy-mm-dd hh:mm:ss)说

  

2015-04-05 16:45:12

我需要将它转换为

  

2015-04-05 16:00:00

有没有一种优雅的方法在Teradata中执行此操作而不是提取小时然后将其与日期一起投射?

2 个答案:

答案 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');

如果需要,可以将其转换回时间戳,这样您就可以将分钟和秒值设置为零的新时间戳值。