0

我在 Google 表格中的日期和时间方面遇到了一些问题。我所拥有的是:

电子表格 1 有许多工作表,其中一张称为Sessions。在那张纸上有许多列,显示有关各个培训课程的各种数据。然后我有第二个电子表格发布到用户可以看到的谷歌网站。它只有一个由 QUERY + IMPORTRANGE 填充的工作表,以从Sessions第一个电子表格的选项卡中获取信息。我这样做的原因是我不希望用户能够看到第一个电子表格中的所有不同工作表,也不希望他们看到其中的所有不同列。还有一个原因。我希望查询过滤会话以仅显示将来发生的会话,而不是已经通过的会话。

我在第二张表中提取数据的查询是:

=query(importrange("IDofMainSpreadsheet","Sessions!A:I");"select Col1,Col2,Col3,Col6")

现在效果很好。我想补充的是:

=query(importrange("IDofMainSpreadsheer","Sessions!A:I");"select Col1,Col2,Col3,Col6 where Col2 >= Now()")

我尝试了许多不同的解决方案,但似乎找不到一个有效的解决方案。

好的....已经取得了一些进展。这并不漂亮,但如果我添加另一张工作表并创建一个包含以下内容的单元格:

 =YEAR(now()) & "-" & DEC2OCT(MONTH(now()), 2) & "-" & DAY(now()) &" " & HOUR(now()) &":"& MINUTE(now()) &":"& SECOND(now())

然后我可以在查询中使用它:

 =query(importrange("IDofSpreadsheet","Sessions!A:I");"select Col1,Col2,Col3,Col6  where Col2  >= datetime '"&Sheet3!B3&"'  ")

如果有人可以帮助我在一行中做到这一点,那就太好了。已尝试toDate(Now())以下建议的选项,但这不会返回任何结果,而上面会返回。

有什么想法吗?

4

2 回答 2

1

在 QUERY select 子句中,now()将产生一个日期时间,我假设您正在与日期进行比较。尝试:

=QUERY(ImportRange("IDofMainSpreadsheer","Sessions!A:I");"select Col1,Col2,Col3,Col6 where Col2 >= toDate(now())")

https://developers.google.com/chart/interactive/docs/querylanguage#scalar_functions

编辑

您的解决方法有效的事实表明您实际上在第 2 列中有日期时间。下面我有一个建议,说明为什么您的原始解决方案可能不起作用,但首先是您的解决方法的更紧凑版本:

=QUERY(ImportRange("IDofSpreadsheet","Sessions!A:I");"select Col1,Col2,Col3,Col6 where Col2 >= datetime '"&TEXT(NOW();"yyyy-MM-dd HH:mm:ss")&"'")

我唯一能想到的是,now()在 QUERY select 子句中并NOW()在电子表格公式中调用似乎在不同的时区运行,并且可能不一定返回相同的结果。例如,现在在我的东澳大利亚时区,前者返回 2012 年 7 月 25 日的日期时间(推测的山景城时间),而后者(正确地)返回 2012 年 7 月 26 日的日期时间。因此,NOW()在解决方法中使用电子表格可能是一种很好的做法(在此阶段)。

于 2012-07-22T11:11:29.350 回答
0

或者只需要更改您的谷歌电子表格上的时区。

于 2017-11-11T22:36:03.223 回答