在BigQuery标准SQL中转换DD-mon-YYYY/dd-mon-yy字符串为dd/mm/yyyy日期
嘿,这两个日期转换需求我熟,给你一步步讲清楚!
1. 将DD-mon-YYYY格式的字符串转换为日期类型
核心思路是用对应工具的日期解析函数,匹配准确的格式符就行。拿BigQuery标准SQL举例,直接用PARSE_DATE()函数就能搞定:
%d对应两位数字的日期(比如05、27)%b对应三位字母的月份缩写(比如Jan、Dec)%Y对应四位数字的年份(比如2023、1998)
示例代码:
SELECT PARSE_DATE('%d-%b-%Y', '27-Jan-2018') AS converted_date;
执行后会返回2018-01-27这样的标准日期类型,后续可以直接用于日期计算或其他操作。
要是用Python处理的话,用datetime模块也很简单:
from datetime import datetime date_str = "27-Jan-2018" date_obj = datetime.strptime(date_str, "%d-%b-%Y") print(date_obj) # 输出: 2018-01-27 00:00:00
2. 在BigQuery标准SQL中将dd-mon-yy转成dd/mm/yyyy格式
这里需要分两步:先把字符串解析成日期类型,再格式化成目标格式。用PARSE_DATE()转日期,再用FORMAT_DATE()输出你要的样式。
注意:%y格式符处理两位年份时,BigQuery默认会把00-69映射到2000-2069,70-99映射到1970-1999,刚好匹配你的示例(18会自动转为2018)。
示例代码:
SELECT FORMAT_DATE('%d/%m/%Y', PARSE_DATE('%d-%b-%y', '27-Jan-18')) AS formatted_date;
执行后输入27-Jan-18会返回27/01/2018,输入28-Jan-18则返回28/01/2018,完全符合需求。
如果要批量处理表中的字段,把字符串换成字段名就行:
SELECT original_date_str, FORMAT_DATE('%d/%m/%Y', PARSE_DATE('%d-%b-%y', original_date_str)) AS formatted_date FROM your_table;
内容的提问来源于stack exchange,提问作者sugan
相关产品推荐
相关产品推荐

