无法在Google表格中找出日期时间查询

问题描述 投票:0回答:3

嗨,我无法弄清楚我的日期时间查询出了什么问题

=QUERY(A:G,"SELECT * WHERE G < datetime '2022-08-24 08:45:00'",1)
在我的Google表格中它应该返回左侧的2行谁的G中的日期时间是
< 2022-08-24 08:45:00
(还提供了屏幕截图)

google-sheets google-sheets-formula
3个回答
2
投票

应该是:

=QUERY(A:G, "WHERE G < datetime '2022-08-24 08:45:00'", 1)

yyyy-mm-dd hh:mm:ss
是正确的格式 - https://developers.google.com/chart/interactive/docs/querylanguage#literals

G2 不能是文本字符串,所以将其乘以 1:

=(TEXT(DATE(LEFT(B2,4),MID(B2,5,2),
 RIGHT(B2,2)),"yyyy-MM-dd")&" "&TEXT(TIME(C2,D2,0),"HH:mm:ss"))*1

但是如果你使用 arrayformula 会更好:

=ARRAYFORMULA(IFERROR(DATE(LEFT(B2:B, 4), MID(B2:B, 5, 2), 
 RIGHT(B2:B, 2))+(TIME(C2:C, D2:D, ))))


1
投票

我对您的 G 列

=DATE(LEFT(B2,4),MID(B2,5,2),RIGHT(B2,2))+(TIME(C2,D2,0))
的公式进行了更改,使其成为纯日期时间值。然后使用下面的查询公式。

=QUERY(A:G,"SELECT * WHERE G < datetime '2022-08-24 08:45:00'",1)

查看您的谷歌表格

harun24hr


0
投票

建议:

由于

QUERY()
函数跨数据运行 Google 可视化 API 查询语言查询,因此它的运行速度比 google 表格中的常用公式慢。如果您有大量数据,这将非常明显。所以另一种方法是使用
FILTER()
函数仅过滤小于 '2022-08-24 08:45:00' 的日期。这运行得更快,几乎是立即的。这里唯一的关键区别是您必须手动复制标题并从第 2 行开始。

您首先必须使用以下方法将 G 列转换为实际的日期和时间格式:

=ARRAYFORMULA(IF(B2:B="", "", DATE(LEFT(B2:B,4),MID(B2:B,5,2),RIGHT(B2:B,2))+(TIME(C2:C,D2:D,0))))


然后使用过滤器:

=FILTER(A1:G, G1:G < DATE(2022,8,24)+time(8,45,0))

结果:

手动复制标题。 **刚刚添加了一些测试数据来查看过滤器是否有效。

参考资料:

© www.soinside.com 2019 - 2024. All rights reserved.