You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Data Studio中如何编写两个日期间的CASE语句

报错原因

触发报错的核心问题有两个:

  • 类型不匹配:FORMAT_DATETIME函数返回值是文本类型,但BETWEEN后面跟的20190218、20190219这类值是数字类型,运算符无法对不同类型的值做范围判断
  • 格式符使用错误:你写的%M代表分钟(取值00-59)、%D代表带序数后缀的日期(比如18th),根本输出不了你想要的8位年月日数字串,就算类型匹配结果也完全错误。
可用方案

推荐写法(无格式转换,稳定性最高)

直接用日期构造函数做范围对比,不需要做任何格式转换,只要你的date字段在数据源中被识别为日期类型即可正常运行,性能也更好:

CASE
  WHEN
    (date >= DATE(2019,2,18) AND date <= DATE(2019,2,19)) OR
    (date >= DATE(2022,2,20) AND date <= DATE(2022,2,22))
  THEN 'presidents_day'
  ELSE NULL
END

兼容你原有思路的写法

如果一定要用年月日数字串的BETWEEN逻辑,需要修正格式符,同时把函数返回的文本强转为数字,保证运算符两边类型一致:

CASE
  WHEN
    CAST(FORMAT_DATETIME("%Y%m%d", date) AS NUMBER) BETWEEN 20190218 AND 20190219 OR
    CAST(FORMAT_DATETIME("%Y%m%d", date) AS NUMBER) BETWEEN 20220220 AND 20220222
  THEN 'presidents_day'
  ELSE NULL
END

注意:日期格式符里%m代表两位数字的月份(01-12)、%d代表两位数字的月内日期(01-31),不要和代表分钟的%M、代表带后缀日期的%D混淆。

两种写法的输出结果完全符合预期:2019年2月18日、2月19日,2022年2月20日、2月21日、2月22日会被标记为presidents_day,其余日期返回空值。

内容的提问来源于stack exchange,提问作者Zach Scheimer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 20:54:25