在DuckDB中优雅处理日期解析错误:将解析失败值置为NULL
解决方案
核心方法:使用try_strptime函数
DuckDB提供的try_strptime函数专门解决这类脏数据解析问题——它会尝试按指定格式解析字符串,解析失败时自动返回NULL,无需手动编写复杂的CASE判断逻辑,能覆盖所有你预判不到的无效日期场景。
改写后的SQL代码
select * EXCLUDE (date_of_birth), try_strptime(date_of_birth, '%Y%m%d')::DATE AS date_of_birth from read_csv_auto( 'bad_data.csv', types={'date_of_birth': 'VARCHAR'} )
补充说明
try_strptime和strptime用法完全一致,核心区别在错误处理:strptime遇到无效格式会直接抛出错误终止查询,而try_strptime会静默返回NULL,保证查询能完整执行。- 该方法能自动处理所有非法日期情况,包括闰年2月29日的合法性校验、不同月份的天数差异、字符串长度不符、包含非数字字符等各类你手动判断无法覆盖的场景。
内容的提问来源于stack exchange,提问作者Hardbyte
相关产品推荐
相关产品推荐

