如何将 TIMESTAMPS_MILLIS 修复为 TIMESTAMP_SECONDS bigquery?
How to fix TIMESTAMPS_MILLIS to TIMESTAMP_SECONDS bigquery?
我需要一些关于大查询的帮助。
我有一个云功能,它从 pub/sub 接收消息并写入我的 table,问题是我犯了一个错误,在 [=16] 时使用了 TIMESTAMP_MILLIS(@hitTS)
=] 已发送 SECONDS
。我应该使用 TIMESTAMP_SECONDS(@hitTS)
我的条目看起来如何:
| hitTS |
-------------------------------
|"1970-01-19 22:44:46.921 UTC"|
|"1970-01-19 22:51:57.842 UTC"|
|"1970-01-19 22:52:27.482 UTC"|
|"1970-01-19 22:43:15.541 UTC"|
通过以下查询我可以获得 TIMESTAMP
SELECT
hitTS, UNIX_MILLIS(hitTS) as MILLI
FROM
`my.table`
WHERE
DATE(hitTS) < "1971-01-01"
结果:
| hitTS || MILLIS |
-----------------------------------------------
|"1970-01-19 22:44:46.921 UTC"| 1637086921 |
|"1970-01-19 22:51:57.842 UTC"| 1637517842 |
|"1970-01-19 22:52:27.482 UTC"| 1637547482 |
|"1970-01-19 22:43:15.541 UTC"| 1636995541 |
-----------------------------------------------
我想如果我使用 MILLIS
字段并在末尾添加 000
似乎我得到了正确的日期...
可以在此处创建查询 我使用上述逻辑更新漏洞 table?
提前致谢!
由于您已经找到了固定日期的方法(通过添加 000
),您可以尝试使用这种方法来更新您的值;
UPDATE `my.table`
SET hitTS=TIMESTAMP_MILLIS(CAST(CONCAT(CAST(UNIX_MILLIS(hitTS) AS STRING),'000') AS INT64))
WHERE
DATE(hitTS) < "1971-01-01"
我为此解决方案修改了以下文档:timestamp_functions and string_functions
我需要一些关于大查询的帮助。
我有一个云功能,它从 pub/sub 接收消息并写入我的 table,问题是我犯了一个错误,在 [=16] 时使用了 TIMESTAMP_MILLIS(@hitTS)
=] 已发送 SECONDS
。我应该使用 TIMESTAMP_SECONDS(@hitTS)
我的条目看起来如何:
| hitTS |
-------------------------------
|"1970-01-19 22:44:46.921 UTC"|
|"1970-01-19 22:51:57.842 UTC"|
|"1970-01-19 22:52:27.482 UTC"|
|"1970-01-19 22:43:15.541 UTC"|
通过以下查询我可以获得 TIMESTAMP
SELECT
hitTS, UNIX_MILLIS(hitTS) as MILLI
FROM
`my.table`
WHERE
DATE(hitTS) < "1971-01-01"
结果:
| hitTS || MILLIS |
-----------------------------------------------
|"1970-01-19 22:44:46.921 UTC"| 1637086921 |
|"1970-01-19 22:51:57.842 UTC"| 1637517842 |
|"1970-01-19 22:52:27.482 UTC"| 1637547482 |
|"1970-01-19 22:43:15.541 UTC"| 1636995541 |
-----------------------------------------------
我想如果我使用 MILLIS
字段并在末尾添加 000
似乎我得到了正确的日期...
可以在此处创建查询 我使用上述逻辑更新漏洞 table?
提前致谢!
由于您已经找到了固定日期的方法(通过添加 000
),您可以尝试使用这种方法来更新您的值;
UPDATE `my.table`
SET hitTS=TIMESTAMP_MILLIS(CAST(CONCAT(CAST(UNIX_MILLIS(hitTS) AS STRING),'000') AS INT64))
WHERE
DATE(hitTS) < "1971-01-01"
我为此解决方案修改了以下文档:timestamp_functions and string_functions