【问题标题】:How to round current time in teradata and insert into timestamp(6) fields如何在 teradata 中舍入当前时间并插入时间戳(6)字段
【发布时间】:2014-07-29 01:28:52
【问题描述】:

我有一个日期字段为 timestamp(6) fields 的表格。

create table test_time 
(
  t1  timestamp(6)  format 'mm/dd/yyyy hh:mm:si' ,
);  

我想在当前日期和时间四舍五入的情况下插入此表。
例如,如果当前日期时间是08/07/2014 10:34:56,那么表中的值应该是08/07/2014 10:00:00
(或)如果当前数据和时间是08/07/2014 10:54:56,那么该值也应该是
08/07/2014 10:34:56

【问题讨论】:

    标签: date teradata rounding


    【解决方案1】:

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

    可以这样截断:

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

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

    【讨论】:

    • 谢谢。我修改了第二个例子。 sql 工作完成
    【解决方案2】:
    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
    

    【讨论】:

    • 欢迎来到 Stack Overflow!虽然此代码可能会回答问题,但提供有关此代码为何和/或如何回答问题的额外上下文可提高其长期价值。
    猜你喜欢
    • 2017-07-07
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多