google-sheets - Google 表格日期查询不适用于特定列
问题描述
我有从 Salesforce 导入的数据,并且我正在使用查询函数来查找任何列的日期在给定范围内的所有行。以下是数据示例:
不工作的查询是:
=query('Salesforce Data'!A2:C,"SELECT A,C WHERE C >= date '"&TEXT(DATEVALUE($A$1),"yyyy-mm-dd")&"' AND C < date '"&TEXT(DATEVALUE($B$1),"yyyy-mm-dd")&"'")
我正在使用相同的查询,除了在一种情况下,它正在查看 B 列中的日期,而在另一种情况下,它正在查看 C 列中的日期。B 列版本有效,C 列版本无效。我已经验证 C 列中至少有一个日期在该范围内,因此它不应该是没有数据的问题,因为错误表明:
我查看了数据格式,在这方面 B 列和 C 列之间没有区别。这些也是 Salesforce 中相同类型的字段,因此我不希望在格式上有所不同。我尝试手动将 C 列中的第一个值更改为日期(这是列之间的明显差异),但这也不起作用。
解决方案
经过大量的试验和错误,我发现了问题:谷歌表格似乎根据大多数单元格对数据列进行分类。因此,即使 B 列和 C 列都有一些具有有效日期的单元格和一些具有-
表示 null 的单元格,但 B 列的日期多于字符串,但 C 的字符串多于日期,因此日期比较查询不适用于 C 列全部。
我现在的解决方案是添加一个公式表以将所有空值-
转换为不会与我的查询混淆的日期 1970 年 1 月 1 日:
示例公式:
=IF( OR('Salesforce Data'!C2="-",'Salesforce Data'!C2=""), date(1970,1,1), 'Salesforce Data'!C2)
另一种解决方案是编辑数据源,但此解决方案将完全在工作表中工作。
还要注意,我把这个公式拖到了我需要的地方,以防万一,确保如果你有一个文本列(比如我的 A 列),你用某种垃圾文本替换那里的空值。起初我替换为0
然后我的文本列没有被查询选中。
推荐阅读
- ubuntu - 如何在 Ubuntu 18.04 的 PhpStorm 中设置 Super+comma 快捷方式?
- javascript - 使用 Material UI 和 React 的动态头像
- javascript - 如何配置“webpack”?JavaScript
- javascript - 如何在运行时使用 jquery 创建 json 对象数组?
- c++ - STL 算法和 back_inserter 可以预先分配空间吗?
- python - 如何将附加列表存储到python中的.txt文件中
- python-2.7 - 杀死一个从 tkinter 开始的 shell 命令
- java - Dropwizard:无法提供静态 HTML
- windows - Jenkins ec2 插件 - windows 代理很慢
- reactjs - 使用别名而不是相对路径创建的打字稿声明文件