0

Googleスプレッドシートの日付と時刻にいくつか問題があります。私が持っているのは:

スプレッドシート1にはいくつかのシートがあり、そのうちの1つはと呼ばれSessionsます。そのシートには、個々のトレーニングセッションに関するあらゆる種類のデータを示すいくつかの列があります。次に、ユーザーが表示できるGoogleサイトに公開されている2番目のスプレッドシートがあります。Sessions最初のスプレッドシートのタブから情報を取得するために、QUERY+IMPORTRANGEによって入力されるシートが1つだけあります。これを行う理由は、ユーザーが最初のスプレッドシートのすべての異なるシートを表示したり、そこにあるすべての異なる列を表示したりしたくないためです。もう1つの理由もあります。クエリでセッションをフィルタリングして、すでに通過したセッションではなく、将来発生するセッションのみを表示するようにします。

データをプルするために2番目のシートにあるクエリは次のとおりです。

=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 に答える