Google表格日期查询不适用于特定列

时间:2019-12-03 16:28:09

标签: google-sheets google-sheets-formula array-formulas google-sheets-query google-query-language

我有要从Salesforce导入的数据,并且正在使用查询功能查找所有列中有日期在给定范围内的所有行。这是数据的示例:

enter image description here

不起作用的查询是:

=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列中至少有一个日期落在该范围内,因此应该不会出现没有数据的问题,因为错误提示:

error

我已经研究了数据格式,在这方面B列和C列之间没有区别。这些字段也与Salesforce中的字段类型相同,因此我不希望格式有所不同。我尝试将C列​​中的第一个值手动更改为日期(这在各列之间有明显的区别),但这也没有用。

2 个答案:

答案 0 :(得分:0)

经过反复试验,我发现了这个问题:Google表格似乎是根据大多数单元格对数据列进行分类的。因此,即使B和C列都有一些带有有效日期的单元格,而有些带有-表示空的单元格,但B列的日期比字符串多,但是C的字符串比日期多,因此日期比较查询不会完全在C列上工作。

我目前的解决方案是添加一个公式表,将所有空值-转换为不会干扰我的查询的日期1/1/1970: enter image description here

示例公式: =IF( OR('Salesforce Data'!C2="-",'Salesforce Data'!C2=""), date(1970,1,1), 'Salesforce Data'!C2)

另一种解决方案是编辑数据源,但是该解决方案将完全在工作表内工作。

还请注意,我将此公式拖到远低于所需的位置,以防万一,请确保如果您有text列(如A列),请用某种垃圾文本替换其中的空值。最初,我用0代替,然后查询未选择我的文本列。

答案 1 :(得分:0)

尝试:

=ARRAYFORMULA(QUERY(TO_TEXT('Salesforce Data'!A2:C), 
 "select Col1,Col3 
  where Col3 >= date '"&TEXT(A1, "yyyy-mm-dd")&"' 
    and Col3 <  date '"&TEXT(B1, "yyyy-mm-dd")&"'", 0))