Google bigquery 将时间添加到日期时间值

Google bigquery 将时间添加到日期时间值,google-bigquery,Google Bigquery,我可以从只适用于INT64值而不适用于时间对象的文档中看到 我有一个DATETIME,它表示开始点,然后是TIME对象中的持续时间 是否有更好的方法将时间对象的3个值小时、分钟、秒添加到给定的DATETIME对象?下面是BigQuery标准SQL 输入为 选择 日期2018年3月5日为开工日期, 时间5,0,0作为开始时间, 时间8,0,0作为持续时间 选择 *, 日期时间开始日期,开始时间为开始日期时间, 日期时间 日期时间 日期时间 日期时间开始日期,开始时间, 从持续时间小时开始的间隔时间

我可以从只适用于INT64值而不适用于时间对象的文档中看到

我有一个DATETIME,它表示开始点,然后是TIME对象中的持续时间


是否有更好的方法将时间对象的3个值小时、分钟、秒添加到给定的DATETIME对象?

下面是BigQuery标准SQL

输入为 选择 日期2018年3月5日为开工日期, 时间5,0,0作为开始时间, 时间8,0,0作为持续时间 选择 *, 日期时间开始日期,开始时间为开始日期时间, 日期时间 日期时间 日期时间 日期时间开始日期,开始时间, 从持续时间小时开始的间隔时间小时 , 从持续时间分钟到间隔分钟 , 从持续时间秒中提取间隔秒 作为结束日期时间, 日期时间 日期时间开始日期,开始时间, 间隔DATETIME\u DIFFDATETIMEstart\u日期,持续时间,DATETIMEstart\u日期,秒 结束日期时间更好 从输入
下面是BigQuery标准SQL

输入为 选择 日期2018年3月5日为开工日期, 时间5,0,0作为开始时间, 时间8,0,0作为持续时间 选择 *, 日期时间开始日期,开始时间为开始日期时间, 日期时间 日期时间 日期时间 日期时间开始日期,开始时间, 从持续时间小时开始的间隔时间小时 , 从持续时间分钟到间隔分钟 , 从持续时间秒中提取间隔秒 作为结束日期时间, 日期时间 日期时间开始日期,开始时间, 间隔DATETIME\u DIFFDATETIMEstart\u日期,持续时间,DATETIMEstart\u日期,秒 结束日期时间更好 从输入
时间数据类型不用于承载持续时间,而是表示独立于特定日期的时间。因此,我觉得你要么很痛苦地执行上述查询,要么改变设计,在与你的应用程序更相关的时间段(如秒、分钟、小时)将持续时间设置为INT64,但和往常一样,这里有一个选择,这里的人会想出更好的方法,这样它就不会那么难看了,因此可以接受:oValue是由联邦电子表格提供的,它充满了谷歌表单的数据。在谷歌表单上有一个小时组件,允许输入小时/分钟/秒,格式就是这个。另一种方法应该是通过regex解析该值并获得一个纯小时值,但我认为这比它更糟糕。所以,请看我的答案,了解更好的方法:oTIME数据类型并不打算承载持续时间,而是表示独立于特定日期的时间。因此,我觉得你要么很痛苦地执行上述查询,要么改变设计,在与你的应用程序更相关的时间段(如秒、分钟、小时)将持续时间设置为INT64,但和往常一样,这里有一个选择,这里的人会想出更好的方法,这样它就不会那么难看了,因此可以接受:oValue是由联邦电子表格提供的,它充满了谷歌表单的数据。在谷歌表单上有一个小时组件,允许输入小时/分钟/秒,格式就是这个。另一种方法应该是通过regex解析该值并获得一个纯小时值,但我认为这比它更糟糕。所以,请看我的回答:o
WITH input AS (
  SELECT
    DATE(2018,03,05) AS start_date,
    TIME(5,0,0) AS start_time,
    TIME(8,0,0) AS duration
)

SELECT
  *,
  DATETIME(start_date,start_time) AS start_datetime,
  DATETIME_ADD(
      DATETIME_ADD(
        DATETIME_ADD(
          DATETIME(start_date,start_time), 
          INTERVAL EXTRACT(HOUR FROM duration) HOUR
        ),
        INTERVAL EXTRACT(MINUTE FROM duration) MINUTE
      ),
        INTERVAL EXTRACT(SECOND FROM duration) SECOND
    ) AS end_datetime

FROM input