Google bigquery 在不同日期格式的大查询中查询多个表

Google bigquery 在不同日期格式的大查询中查询多个表,google-bigquery,date-format,Google Bigquery,Date Format,我对使用BigQuery和编写查询非常陌生 我想从两个不同的表中提取数据,每个表都有一个带有日期戳但格式不同的字段。所有字段都作为纯文本导入,因此我必须将每个字段转换为其他格式 表1的格式为“2020-10-09 00:00:00”,表2的日期字段格式为“2020-10-09” 这是我使用的代码 SELECT e.Region, e.OmradeNamn, SAFE_CAST(e.Datum as Date) as Datum, FORMAT_DATE('%u', SAFE_CAST(e.Da

我对使用BigQuery和编写查询非常陌生

我想从两个不同的表中提取数据,每个表都有一个带有日期戳但格式不同的字段。所有字段都作为纯文本导入,因此我必须将每个字段转换为其他格式

表1的格式为“2020-10-09 00:00:00”,表2的日期字段格式为“2020-10-09” 这是我使用的代码

SELECT 
e.Region,
e.OmradeNamn,
SAFE_CAST(e.Datum as Date) as Datum,
FORMAT_DATE('%u', SAFE_CAST(e.Datum as Date)) AS Veckodag,
e.Rutt_Stilling,
...
...
...
...
r.NA_ArbPass,

FROM `leveranskvalitet` e 
  LEFT JOIN `rutterap` r 
  ON e.Rutt_Stilling = r.Rutt_Stilling
  and e.Datum = r.Datum

  Where cast(LEFT(e.Datum,10) as date) =  Cast(@DATUM as date)
  ...
  ...
  Order by e.Rutt_Stilling ASC>
从表2中只能得到“NULL”

如果我使用另一个表,如表1中的dateformat“2020-10-09”,则从表2中提取数据没有问题

要选择日期,我使用另一张图纸中的单元格引用(@Datum)

谢谢你在这方面的帮助
罗杰

假设数据类型为时间戳和日期,则可以执行以下操作:

with temp_ts as (
 select timestamp('2020-10-09 00:00:00') as ts
),
temp_dt as (
 select date('2020-10-09') as dt
)

select *
from temp_ts t
join temp_dt d
 on extract(date from t.ts) = d.dt;
根据您的查询:

SELECT 
e.Region,
e.OmradeNamn,
SAFE_CAST(e.Datum as Date) as Datum,
FORMAT_DATE('%u', SAFE_CAST(e.Datum as Date)) AS Veckodag,
e.Rutt_Stilling,
...
...
...
...
r.NA_ArbPass,

FROM `leveranskvalitet` e 
  LEFT JOIN `rutterap` r 
  ON e.Rutt_Stilling = r.Rutt_Stilling
  and date(cast(e.Datum as datetime) = cast(r.Datum as date)

  Where cast(LEFT(e.Datum,10) as date) =  Cast(@DATUM as date)
  ...
  ...
  Order by e.Rutt_Stilling ASC>

谢谢。但是,我是个新手。我怎么用这个?我把你的代码放在第一位,但是我必须在我的代码中改变什么呢?在你的场景中,上面是表1,下面是表2?
LeveranskValite
e是表1,
rutterap
r是表2。我已经更新了我的答案,到
rutterap
的连接现在包括提取日期逻辑。最后一部分给出了一个错误。就像我在问题中写的,所有字段都是纯文本,没有任何字段是格式化的,所以我必须转换每个字段。错误是“参数类型提取:从字符串中提取日期”,所以我想这是因为它是纯文本,而不是真实的日期。有什么建议吗?