我有这样的疑问:
SELECT *
FROM mytable fact
JOIN time_table time ON ( time.time_5_min_utc = fact.event_5_min_utc )
WHERE fact.event_utc >= ${fromTimestamp}
AND fact.event_utc < ${toTimestamp}
AND time.time_5_min_utc >= ${fromTimestamp}
AND time.time_5_min_utc < ${toTimestamp}
我总是知道 UTC 中的 fromTimestamp。
我现在想要的是为 toTimestamp 添加值以获得一天的结束时间。
类似:
SELECT *
FROM mytable fact
JOIN time_table time ON ( time.time_5_min_utc = fact.event_5_min_utc )
WHERE fact.event_utc >= ${fromTimestamp}
AND fact.event_utc < ${toTimestamp} + 86400000
AND time.time_5_min_utc >= ${fromTimestamp}
AND time.time_5_min_utc < ${toTimestamp} + 86400000
这应该将 86400000 添加到 toTimestamp 但我得到的是 +24h。 应该是当天结束时间 23:59:59。
我怎样才能做到这一点?
我找到了解决这个问题的方法,我想分享我的解决方案。
CAST (
to_utc_timestamp (
date_add (
date_add (
date_trunc (
'day',
CAST (
CAST (
${toTimestamp} AS DECIMAL (30, 0))
/ 1000
AS TIMESTAMP)),
1),
interval
- 1 seconds),
'Asia/Jerusalem')
AS BIGINT)
* 1000
说明:
首先,'toTimestamp 被转换为十进制,以便之后能够将其转换为时间戳。当它是时间戳时,可以提取它的日期,然后减去 1 秒以获得 23:59:59 之前的日期。然后将其转换回具有正确时区的 UTC 时间戳。最后将其转换回数字并乘以 1000 以获得以毫秒为单位的 UTC 时间戳。