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