使用%E4Y%m%d等无分隔日期格式调用FORMAT_DATE时出现语法错误如何解决
问题原因
你触发报错的核心原因是FORMAT_DATE函数的第一个入参要求为字符串类型的格式模板,你没有给%E4Y%m%d/%Y%m%d这类格式内容加引号,SQL解析器会把%开头的内容识别为非法标识符,因此抛出非法字符报错。
解决方法
直接给格式模板包裹单引号即可,符合你预期的正确写法如下:
WHERE _TABLE_SUFFIX = FORMAT_DATE('%Y%m%d', DATE_TRUNC(DATE_SUB(date_val, INTERVAL 1 MONTH), MONTH))
补充说明
%Y对应4位年份、%m对应2位补零的月份、%d对应2位补零的日期,刚好匹配你需要的20210901这类输出格式,不需要使用%E4Y写法也能完全满足需求- 标准SQL环境下使用单引号或双引号包裹字符串都可以,只要前后统一即可,上述写法完全兼容BigQuery的
_TABLE_SUFFIX匹配场景。
内容的提问来源于stack exchange,提问作者archjkeee
相关产品推荐
相关产品推荐

