如何在 HANA 中将时间戳舍入为小时
How to round a time stamp to hour in 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
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;
希望对你有帮助,
您只想截断分钟和秒吗?像这样从日期中减去分钟和秒怎么样:
SELECT ADD_SECONDS(CURRENT_TIMESTAMP,
- MINUTE(CURRENT_TIMESTAMP) * 60
- SECOND(CURRENT_TIMESTAMP)) FROM DUMMY
如果您真的想 round 以便将 30 分钟或更多分钟四舍五入到下一个小时,您需要使用 CASE 减去 minutes/seconds 或将剩余分钟数添加到下一个小时:
SELECT ADD_SECONDS(CURRENT_TIMESTAMP,
CASE WHEN MINUTE(CURRENT_TIMESTAMP) < 30
THEN -MINUTE(CURRENT_TIMESTAMP) * 60 - SECOND(CURRENT_TIMESTAMP)
ELSE (60-MINUTE(CURRENT_TIMESTAMP)) * 60 - SECOND(CURRENT_TIMESTAMP)
END
) FROM DUMMY
根据需要将 CURRENT_TIMESTAMP
替换为您的时间戳列。
使用series_round()
。这是舍入时间戳的最快方法,尤其是在分组依据中使用它时。
select series_round('2016-09-03 10:27:09', 'interval 1 hour') from dummy
查看 documentation 以了解更多舍入选项。
我在 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;
希望对你有帮助,
您只想截断分钟和秒吗?像这样从日期中减去分钟和秒怎么样:
SELECT ADD_SECONDS(CURRENT_TIMESTAMP,
- MINUTE(CURRENT_TIMESTAMP) * 60
- SECOND(CURRENT_TIMESTAMP)) FROM DUMMY
如果您真的想 round 以便将 30 分钟或更多分钟四舍五入到下一个小时,您需要使用 CASE 减去 minutes/seconds 或将剩余分钟数添加到下一个小时:
SELECT ADD_SECONDS(CURRENT_TIMESTAMP,
CASE WHEN MINUTE(CURRENT_TIMESTAMP) < 30
THEN -MINUTE(CURRENT_TIMESTAMP) * 60 - SECOND(CURRENT_TIMESTAMP)
ELSE (60-MINUTE(CURRENT_TIMESTAMP)) * 60 - SECOND(CURRENT_TIMESTAMP)
END
) FROM DUMMY
根据需要将 CURRENT_TIMESTAMP
替换为您的时间戳列。
使用series_round()
。这是舍入时间戳的最快方法,尤其是在分组依据中使用它时。
select series_round('2016-09-03 10:27:09', 'interval 1 hour') from dummy
查看 documentation 以了解更多舍入选项。