我看过其他类似的帖子,不确定他们是否明确地回答了这个问题 - 也许他们确实回答了这个问题,很抱歉,如果我错过了任何可以回答这个问题的观点。
我有一根绳子
"2017-06-16T10:34:57.705+01:00"
如何将其从字符串转换为“时间戳”类型,但保留精度(毫秒)和时区偏移量?
TIMESTAMP("2017-06-16T10:34:57.705+01:00")
转换为 UTC 时间戳并失去毫秒精度,我想要一个时间戳类型,但保留本地日期与时区的所有精度?
FORMAT_TIMESTAMP("%Y-%m-%dT%H:%M:%E*S%Ez",PARSE_TIMESTAMP("%Y-%m-%dT%H:%M:%E*S%Ez", "2017-06-16T10:34:57.705+01:00"),"Europe/London")
这保留了精度并具有偏移量,但它是一个字符串 - 然后我在尝试再次转换为时间戳 TIMESTAMP(x) 时丢失了它!
我觉得我在兜圈子,感谢任何帮助!
Cheers
The TIMESTAMP https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#timestamp-typetype 是相对于 UNIX 纪元的某个时间点。它具有微秒精度并且不编码时区,尽管TIMESTAMP
- 相关函数默认使用UTC,例如用于提取一个DATE
.
目前尚不清楚为什么要保留时间戳的原始时区,但您可以做的一件事是保留一个整数列,其中包含与 UTC 的偏移量,您可以使用以下方法进行计算TIMESTAMP_DIFF
忽略字符串中的时区的输入时间戳和使用字符串中的时区的输入时间戳之间。
对于精度,您可以检查提供的时间戳和结果之间是否相等TIMESTAMP_TRUNC
例如MILLISECOND
看看精度是多少。我不知道您想如何处理这些信息,但您也可以使用字符串或整数来表示精度。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)