我在处理字符串格式的日期字段时遇到问题,所以我正在尝试清理基础。我的基础中的默认格式日期字符串是“%d /%m /%Y”,但由于这来自csv文件,可能存在一些不合需要的字符串。当我尝试解析时,我遇到了错误:
parse_date('%d/%m/%Y',trim(e.checkin))
像这样,但每次我跑的时候都会得到一个新的有问题的字符:
Illegal non-space trailing data '�' in string "25/07/201€"
处理此问题的最佳方法是什么?
答案 0 :(得分:1)
解决此问题的核心是识别具有“损坏的”checkin
字段
然后,您可以跳过处理它们,如下所示
#standardSQL
WITH e AS (
SELECT '25/07/201€' AS checkin UNION ALL
SELECT '25/07/2016'
)
SELECT
checkin AS checking_string,
PARSE_DATE('%d/%m/%Y',TRIM(e.checkin)) AS checking_date
FROM e
WHERE REGEXP_CONTAINS(e.checkin, r'^(\d){2}/(\d){2}/(\d){4}$')
或者你可以采用某种方式特别针对那些破碎的价值进行处理的逻辑
无论如何,使用WHERE REGEXP_CONTAINS(e.checkin, r'^(\d){2}/(\d){2}/(\d){4}$')
方法可以控制情况
希望这能给你足够的指示