如何在BigQuery标准SQL中将YYYY-MM-DD日期转为YYYYMM字符串
在BigQuery标准SQL中将YYYY-MM-DD日期转为YYYYMM字符串的方法
嘿,我懂你的需求啦!你之前用substr(cast(export_date as string), 0,7)得到2020-06,是因为截取的前7个字符刚好包含了年份、中间的横杠和月份,所以才会带分隔符。这里给你几种实用的解决办法:
方法1:使用DATE_FORMAT(最推荐)
BigQuery标准SQL支持DATE_FORMAT函数,可以直接指定输出格式,一步到位:
SELECT DATE_FORMAT(export_date, '%Y%m') AS formatted_date FROM your_table;
%Y代表4位数字的年份,%m代表2位数字的月份(自动补前导零,比如6月会变成06),这样直接就能得到YYYYMM格式的字符串。
方法2:字符串替换法
如果你习惯用字符串处理的方式,可以先截取前7位,再把横杠替换掉:
SELECT REPLACE(SUBSTR(CAST(export_date AS STRING), 1, 7), '-', '') AS formatted_date FROM your_table;
这里注意BigQuery的SUBSTR索引是从1开始的(不过写0也能正常工作,因为它会自动调整为1),替换掉横杠后就得到了不带分隔符的目标格式。
方法3:提取年份+月份拼接
通过EXTRACT分别取出年份和月份,再拼接成规范格式:
SELECT CONCAT( CAST(EXTRACT(YEAR FROM export_date) AS STRING), LPAD(CAST(EXTRACT(MONTH FROM export_date) AS STRING), 2, '0') ) AS formatted_date FROM your_table;
LPAD的作用是确保月份是两位数字,比如1月会被补成01,避免出现20201这种不规范的格式。
这三种方法都能满足你的需求,个人最推荐第一种,因为它是专门的日期格式化函数,代码更简洁可读性也更强。
内容的提问来源于stack exchange,提问作者CallmeJezza
相关产品推荐
相关产品推荐

