如何连接定义为字符串数据类型且在 bigquery 中采用不同格式的日期列?
how to join date columns defined as string data type and are in different formats in bigquery?
我有两个 tables Master 和 Platforms。我正在尝试根据日期列加入两个 table。
但是Master table中的Date列格式为YYYY-MM-DD,数据类型为String,
平台 table 中的日期列的格式为 MM/DD/YY,数据类型为字符串。
我正在尝试的连接条件是 Master.Date BETWEEN Platforms.StartDate 和 Platforms.EndDate
我已尝试解析列并将其转换为日期,但没有生成任何记录。
SAFE.PARSE_DATE("%Y-%m-%d", Master.Date) BETWEEN
SAFE.PARSE_DATE("%m/%d/%Y",Platforms.StartDate) AND SAFE.PARSE_DATE("%m/%d/%Y",Platforms.EndDate)
我应该添加什么来比较这些列?
Query:
select * from Master, Platforms
where
SAFE.PARSE_DATE("%Y-%m-%d", Master.Date) BETWEEN
SAFE.PARSE_DATE("%m/%d/%Y",Platforms.StartDate) AND SAFE.PARSE_DATE("%m/%d/%Y",Platforms.EndDate)
Master Table Ex:
Name Date ID
Alex 2019-01-25 1
David 2019-02-25 2
Seth 2019-03-25 3
Peter 2019-04-25 4
Taylor 2019-05-25 5
Platform Table Ex:
Type StartDate EndDate
Abc 01/05/19 01/31/19
Def 02/25/19 03/31/19
Ghi 05/01/19 05/24/19
klm 05/01/19 05/25/19
Expected O/P:
Name Date ID Type StartDate EndDate
Alex 2019-01-25 1 Abc 01/05/19 01/31/19
David 2019-02-25 2 Def 02/25/19 03/31/19
Taylor 2019-05-25 5 klm 05/01/19 05/25/19
尝试'%y'
(小写):
where SAFE.PARSE_DATE("%Y-%m-%d", Master.Date) BETWEEN
SAFE.PARSE_DATE('%m/%d/%y', Platforms.StartDate) AND
SAFE.PARSE_DATE('%m/%d/%y', Platforms.EndDate)
格式规范中的 '%Y'
将年份视为四位数年份。所以,“19”-->“0019”。据推测,您想要“2019”,这就是 '%y'
合适的原因。
我有两个 tables Master 和 Platforms。我正在尝试根据日期列加入两个 table。 但是Master table中的Date列格式为YYYY-MM-DD,数据类型为String, 平台 table 中的日期列的格式为 MM/DD/YY,数据类型为字符串。
我正在尝试的连接条件是 Master.Date BETWEEN Platforms.StartDate 和 Platforms.EndDate
我已尝试解析列并将其转换为日期,但没有生成任何记录。
SAFE.PARSE_DATE("%Y-%m-%d", Master.Date) BETWEEN
SAFE.PARSE_DATE("%m/%d/%Y",Platforms.StartDate) AND SAFE.PARSE_DATE("%m/%d/%Y",Platforms.EndDate)
我应该添加什么来比较这些列?
Query:
select * from Master, Platforms
where
SAFE.PARSE_DATE("%Y-%m-%d", Master.Date) BETWEEN
SAFE.PARSE_DATE("%m/%d/%Y",Platforms.StartDate) AND SAFE.PARSE_DATE("%m/%d/%Y",Platforms.EndDate)
Master Table Ex:
Name Date ID
Alex 2019-01-25 1
David 2019-02-25 2
Seth 2019-03-25 3
Peter 2019-04-25 4
Taylor 2019-05-25 5
Platform Table Ex:
Type StartDate EndDate
Abc 01/05/19 01/31/19
Def 02/25/19 03/31/19
Ghi 05/01/19 05/24/19
klm 05/01/19 05/25/19
Expected O/P:
Name Date ID Type StartDate EndDate
Alex 2019-01-25 1 Abc 01/05/19 01/31/19
David 2019-02-25 2 Def 02/25/19 03/31/19
Taylor 2019-05-25 5 klm 05/01/19 05/25/19
尝试'%y'
(小写):
where SAFE.PARSE_DATE("%Y-%m-%d", Master.Date) BETWEEN
SAFE.PARSE_DATE('%m/%d/%y', Platforms.StartDate) AND
SAFE.PARSE_DATE('%m/%d/%y', Platforms.EndDate)
格式规范中的 '%Y'
将年份视为四位数年份。所以,“19”-->“0019”。据推测,您想要“2019”,这就是 '%y'
合适的原因。