计算BQ中不同格式的两个时间戳之间的天数

时间:2015-06-09 23:19:33

标签: sql google-bigquery

我是BQ的新手并且正在努力解决以下问题: 我想找出没有。两个时间戳之间的天数 以不同的格式输入。 例如:Date_Col1是2015/04/13 12:40:44.000和  Date_Col2输入为2015年4月30日17:35 我尝试使用日期更改格式(时间戳(2015年4月30日17:35))我每次都得到null。 BQ不允许我改变 Col2的日期格式与col1一起使用。另一个问题是Date_Col2输入时包含月份值的单位和双位数,因此无法使用concat或substring。有时col2也输入为null。 我猜空值可以用0代替。

我想知道是否有人在这个用例上工作过。

以下是以不同格式计算两个日期之间的工作日的示例。它适用于其他日期,但不适用于Vitals Date(具有不同格式的Date_col2)

(DATEDIFF(TIMESTAMP(hp.ARRIVAL_TIME_PAC_TZ),TIMESTAMP(Vitals_date))+ 1)   - (INTEGER((DATEDIFF(TIMESTAMP(hp.ARRIVAL_TIME_PAC_TZ),(TIMESTAMP(Vitals_date)))+ 1)/ 7)* 2)    - (DAYOFWEEK时(CASESTAMP(Vitals_date))= 1然后1 ELSE 0 END)    - (例如DAYOFWEEK(TIMESTAMP(hp.ARRIVAL_TIME_PAC_TZ))= 7那么1 ELSE 0 END)作为AGING_GUTS_ARRIVAL_Vitals_date,

1 个答案:

答案 0 :(得分:1)

要将col2转换为时间戳,您可以使用以下内容:

timestamp(concat(
  regexp_extract(col2, r"\d+/\d+/(\d+)"), "/", 
  regexp_extract(col2, r"(\d+)/\d+/\d+"), "/", 
  regexp_extract(col2, r"\d+/(\d+)/\d+"), 
  regexp_extract(col2, r"\d+/\d+/\d+(.*)"), ":00"))

月份应该使用1或2位数