仅在BigQuery中更改月份和日期

问题描述

BigQuery是否与DATEFROMPARTS等效?我只想更改时间戳中的月份和日期,而不更改年份。

这是我在DATETIME的桌子:

BirthYear 
2014-12-12T00:00:00
2015-01-07T00:00:00

我只想更改月份和日期,但保留年份。例如,将底行更改为:2015-04-01T00:00:00

以下查询在MS sql中有效,我正尝试在BigQuery中重写它:

UPDATE `table` SET BirthYear = DATEFROMPARTS(BirthYear,04,01) WHERE BirthYear IS NULL

解决方法

对于以下SQL Server表达式:

datetime_trunc()

在BigQuery中,您可以使用datetime_add()datetime_add(datetime_trunc(birthdate,year),interval 4 month) 来做到这一点:

datetime

这将为您提供date_trunc()值。如果要处理date_add(),则可以使用date和{{1}}。

,

相当于date(extract(year from BirthYear),4,1) 的BigQuery是

datetime(date(extract(year from BirthYear),1))   

此外,如果您需要它“转换”回日期时间,则可能要按以下方式使用

A = replace(X,"," ");