小智 10
问题中有一些含糊之处。在这种情况下,“round”的使用可以解释为“截断到最接近的小时或分钟”,到目前为止的模式已经证明了这一点,并且可能比floor它有更接近的类比round。但是,在某些合理的情况下,人们可能希望真正将时间戳“舍入”到最接近的小时\xe2\x80\x94,即模拟操作round。这当然是可行的:
with events as\n(\n select timestamp(\'2020-04-21T18:21:55.967+00:00\') as event_at\n union all\n select timestamp(\'2020-04-21T18:51:55.967+00:00\') as event_at\n)\nselect event_at\n , timestamp_trunc(event_at, hour) as event_truncated_hour\n , timestamp_trunc(timestamp_add(event_at, interval 30 minute), hour) as event_rounded_hour\nfrom events\nRun Code Online (Sandbox Code Playgroud)\n\n这产生
\n\n| event_at | event_truncated_hour | event_rounded_hour |\n|----------------------------------|--------------------------------|-------------------------------|\n| 2020-04-21T18:21:55.967+00:00 | 2020-04-21T18:00:00.000+00:00 | 2020-04-21T18:00:00.000+00:00 |\n| 2020-04-21T18:51:55.967+00:00 | 2020-04-21T18:00:00.000+00:00 | 2020-04-21T19:00:00.000+00:00 |\nRun Code Online (Sandbox Code Playgroud)\n
以下是BigQuery标准SQL
#standardSQL
WITH `project.dataset.table` AS (
SELECT DATETIME '2018-01-01 01:05:56' input_datetime
)
SELECT input_datetime,
DATETIME_TRUNC(input_datetime, MINUTE) rounded_to_minute,
DATETIME_TRUNC(input_datetime, HOUR) rounded_to_hour
FROM `project.dataset.table`
Run Code Online (Sandbox Code Playgroud)
结果为
Row input_datetime rounded_to_minute rounded_to_hour
1 2018-01-01T01:05:56 2018-01-01T01:05:00 2018-01-01T01:00:00
Run Code Online (Sandbox Code Playgroud)
对于TIMESTAMP或TIME数据类型-您可以分别使用- TIMESTAMP_TRUNC()或TIME_TRUNC()
| 归档时间: |
|
| 查看次数: |
2442 次 |
| 最近记录: |