Sap 如何在HANA中将时间戳舍入为小时

Sap 如何在HANA中将时间戳舍入为小时,sap,hana,Sap,Hana,我在HANA中有一个时间戳列,我想将这些时间戳四舍五入到小时,这意味着 time _____ 2016-09-03 10:27:09 我希望这样 time _____ 2016-09-03 10:00:00 欢迎提供任何帮助。请检查以下SQLScript do begin declare lv_ts TIMESTAMP := CURRENT_TIMESTAMP; select case when minute(:lv_ts) >=30 then

我在HANA中有一个时间戳列,我想将这些时间戳四舍五入到小时,这意味着

time
_____
2016-09-03 10:27:09
我希望这样

time
_____
2016-09-03 10:00:00

欢迎提供任何帮助。

请检查以下SQLScript

do begin

declare lv_ts TIMESTAMP := CURRENT_TIMESTAMP;

select 
    case when minute(:lv_ts) >=30 
    then
        ADD_SECONDS(
            :lv_ts, 
            (60 * 60 - (minute(:lv_ts) * 60 + to_int(second(:lv_ts))))
        )
    else 
        ADD_SECONDS(
            :lv_ts, 
            -1 * (minute(:lv_ts) * 60 + to_int(second(:lv_ts)))
        )
    end
from dummy;

end;

我希望这会有帮助,

您是否只想缩短分秒?从日期中减去分和秒怎么样,如下所示:

选择添加秒数(当前时间戳,
-分钟(当前时间戳)*60
-来自虚拟的第二个(当前_时间戳)
如果您真的想将30分钟或更多的时间四舍五入到下一个小时,则需要使用CASE减去分钟/秒或将剩余的分钟添加到下一个小时:

选择添加秒数(当前时间戳,
分钟(当前时间戳)<30时的情况
然后-分钟(当前时间戳)*60秒(当前时间戳)
ELSE(60分钟(当前时间戳))*60秒(当前时间戳)
终止
)来自虚拟
根据需要,用时间戳列替换当前时间戳。

使用
series\u round()
。这是循环时间戳的最快方法,尤其是在分组时

select series_round('2016-09-03 10:27:09', 'interval 1 hour') from dummy

查看更多舍入选项。

快两分钟!:)-但是您的保留微秒是因为to_int(),这可能是不需要的。您现在返回的是
23.02.2017 15:00:00.483
。那么这是不是更快捷的作品