将时间戳字段的分钟和秒组件设置为 0
Setting Minute and Second component of Timestamp field to 0
我有一个要求,如果我输入时间戳 (yyyy-mm-dd hh:mm:ss) 说
2015-04-05 16:45:12
我需要将其转换为
2015-04-05 16:00:00
在 Teradata 中是否有一种优雅的方法来执行此操作而不是提取小时然后用日期转换它?
一种方法是提取要保留值的 substr,然后 concatenate 分和秒的零。
例如,
SELECT concat(substr('2015-04-05 16:45:12', 1, 14), '00:00');
如果需要,您可以将其转换回 timestamp,因此您将拥有 分秒 的新时间戳值值设置为零。
与其将字符串 from/to 转换两次,减去间隔可能更有效:
ts - (EXTRACT(MINUTE FROM ts) * INTERVAL '01' MINUTE)
- (EXTRACT(SECOND FROM ts) * INTERVAL '01' SECOND)
如果代码太多,只需将其放在 SQL UDF 中即可。
我有一个要求,如果我输入时间戳 (yyyy-mm-dd hh:mm:ss) 说
2015-04-05 16:45:12
我需要将其转换为
2015-04-05 16:00:00
在 Teradata 中是否有一种优雅的方法来执行此操作而不是提取小时然后用日期转换它?
一种方法是提取要保留值的 substr,然后 concatenate 分和秒的零。
例如,
SELECT concat(substr('2015-04-05 16:45:12', 1, 14), '00:00');
如果需要,您可以将其转换回 timestamp,因此您将拥有 分秒 的新时间戳值值设置为零。
与其将字符串 from/to 转换两次,减去间隔可能更有效:
ts - (EXTRACT(MINUTE FROM ts) * INTERVAL '01' MINUTE)
- (EXTRACT(SECOND FROM ts) * INTERVAL '01' SECOND)
如果代码太多,只需将其放在 SQL UDF 中即可。