如何在BigQuery中按位置拆分列并提取出生日期年份?
提取BigQuery中YYYYMMDD格式出生日期的年份
没问题,针对你这种以YYYYMMDD格式存储的出生日期列,用SUBSTRING提取年份完全可行,但要注意BigQuery的字符串索引是从1开始的,这和你一开始想的0位起始不一样,这是很容易踩的小坑!
正确的SQL命令(字符串类型列)
假设你的表名为your_table,出生日期列名为birth_date(字符串类型,比如值为19900311),直接用SUBSTRING截取前4位即可:
SELECT birth_date, SUBSTRING(birth_date, 1, 4) AS birth_year FROM `your_table`;
数字类型列的处理
如果你的birth_date是数字类型(比如INT64),需要先把它转换成字符串再截取:
SELECT birth_date, SUBSTRING(CAST(birth_date AS STRING), 1, 4) AS birth_year FROM `your_table`;
更简洁的替代方案:LEFT函数
其实用LEFT函数会更直观,直接取字符串的前4个字符,效果和SUBSTRING完全一致:
SELECT birth_date, LEFT(birth_date, 4) AS birth_year FROM `your_table`;
举个实际例子,当birth_date为19930802时,上面的查询都会返回1993,完美匹配你的需求。
内容的提问来源于stack exchange,提问作者user12232106
相关产品推荐
相关产品推荐

