Date 如何在teradata中舍入当前时间并插入时间戳(6)字段

Date 如何在teradata中舍入当前时间并插入时间戳(6)字段,date,teradata,rounding,Date,Teradata,Rounding,我有一个表,其中日期字段为时间戳(6)字段 create table test_time ( t1 timestamp(6) format 'mm/dd/yyyy hh:mm:si' , ); 我想将当前日期和时间四舍五入插入此表。 i、 例如,如果当前日期时间为08/07/2014 10:34:56,则表中的值应为08/07/2014 10:00:00 (或)如果当前数据和时间为08/07/2014 10:54:56,则该值也应为 08/07/2014 10:34:56您的第一

我有一个表,其中日期字段为
时间戳(6)
字段

create table test_time 
(
  t1  timestamp(6)  format 'mm/dd/yyyy hh:mm:si' ,
);  
我想将当前日期和时间四舍五入插入此表。
i、 例如,如果当前日期时间为
08/07/2014 10:34:56
,则表中的值应为
08/07/2014 10:00:00
(或)如果当前数据和时间为
08/07/2014 10:54:56
,则该值也应为

08/07/2014 10:34:56

您的第一个示例是截断时间,而不是四舍五入

截断可以这样做:

CURRENT_TIMESTAMP(0) - 
EXTRACT(MINUTE FROM CURRENT_TIMESTAMP(0)) * INTERVAL '1' MINUTE - 
EXTRACT(SECOND FROM CURRENT_TIMESTAMP(0)) * INTERVAL '1' SECOND

但我不明白你的第二个例子,根本没有截断/舍入,只是减去20分钟?

谢谢。我已经修改了第二个例子。sql是有效的欢迎使用堆栈溢出!虽然此代码可能会回答该问题,但提供有关此代码为什么和/或如何回答该问题的附加上下文可提高其长期价值。
select
cast('2059-02-19 10:59:59.110000' as timestamp(6)),  
CASE WHEN EXTRACT(MINUTE FROM cast('2059-02-19 10:59:59.110000' as timestamp(6))) - 60   >= 0
THEN  cast('2059-02-19 10:59:59.110000' as timestamp(6)) + ((30 - EXTRACT(MINUTE FROM cast('2059-02-19 10:59:59.110000' as timestamp(6)))) * INTERVAL  '1' MINUTE) 
- (EXTRACT(SECOND FROM cast('2059-02-19 10:31:59.110000' as timestamp(6))) * INTERVAL '1' SECOND)
ELSE cast('2059-02-19 10:59:59.110000' as timestamp(6)) -  EXTRACT(MINUTE FROM cast('2059-02-19 10:59:59.110000' as timestamp(6)))  * INTERVAL  '1' MINUTE
 - (EXTRACT(SECOND FROM cast('2059-02-19 10:31:59.110000' as timestamp(6)))* INTERVAL '1' SECOND)    
END AS Converted_Time