迄今为止的 19 位整数时间戳

问题描述 投票:0回答:1

我有一列由 19 个整数组成,我的目标是从中提取日期。 几乎尝试了网上粘贴的所有功能,但每次都会出错,有时错误是“超出范围”

输入代码: 1696832033213544000

-来自源数据库的这种格式-

所需格式: YYYY-MM-DD

我正在使用bigquery,并且尝试了以下代码:

FORMAT_TIMESTAMP ("%Y-%m-%d", create_date)

SAFE.TIMESTAMP_MIcr(create_date)

DATE_FROM_UNIX_DATE(create_date)

PARSE_DATE('%Y%m%d', CAST(create_date))

sql google-bigquery
1个回答
0
投票

解决您问题的流程:

  1. 确定您的时间戳格式。并非所有解释器/文件格式都可以使用相同格式的时间戳。例如。 AVRO 允许纳秒时间戳,而 BQ 允许最大微秒。如果您不确定 - 该网站将为您提供一些有关您正在使用的内容的提示:https://www.unixtimestamp.com/index.php
  2. 时间戳只是整数,表示自特定日期以来特定单位的数量(与时间戳开始日期不同,时间戳在不同编程语言中非常一致)。因此 - 检查有关处理堆栈时间戳的文档。在您的情况下,这是相关的:https://cloud.google.com/bigquery/docs/reference/standard-sql/timestamp_functions
  3. 截断整数以适合所需的格式,并将其转换为所需堆栈的时间戳,即从纳秒到微秒只需除以 1000

你想要什么:

SELECT TIMESTAMP_MICROS(CAST(1696832033213544000/1000 AS INT64))

输出:

2023-10-09 06:13:53.213544 UTC
© www.soinside.com 2019 - 2024. All rights reserved.