深夜の日付とタイムスタンプの処理こんにちは、みんな、
私は、制御された環境で光と日が入れ替わった実験のデータを使用しています。
この場合、一定期間、ライトは毎日午後10時にオンになり、午前10時にオフになります。 この実験の各DateTime値(5分ごと)について、明るいか暗いかを特徴付ける必要がある列を作成しました。
スクリプトを作成しました:
If( :LightsOnDate < :DateTime <= :LightsOffDate,
"Light phase",
"Dark phase"
)
DateTimeのデータが午後10時を過ぎると、値は正しく「明るいフェーズ」になりますが、真夜中を過ぎると、再び「暗いフェーズ」に変わります。
なぜそれをしているのですか、どうすれば修正できますか?
Brジュリー
データ表スクリプティングRe:深夜の日付とタイムスタンプの処理あなたの数式は正しく機能しているようです。 前日にライトがオンになったため、最後の3行のLightOnDateが正しくない可能性がありますか?
Re:深夜の日付とタイムスタンプの処理オンとオフの時間が静的であることを考えると、式は次のようになります。
If( Hour( :DateTime - In Hours( 10 ) ) < 12,
"Dark phase",
"Light phase"
)
1日の時間を処理する必要があり、10時間の減算により、日が整列します。
Re:深夜の日付とタイムスタンプの処理こんにちは@JulieSAppel 、
なので@txnelson言及、あなたは時間の問題に対処する必要があります。 次の列式の変更で動作するようになりました。 ライトは常に22:00に点灯するので、22を選択しました。 しかし、これを行う方法は他にもあります。
If(
:LightOnDate < :DateTime <= :LightOffDate |
Date Difference( :DateTime, :LightOnDate, "Hour" ) == 22,
"Light Pahse",
"Dark Phase"
)
Re:深夜の日付とタイムスタンプの処理ライトのオンとオフは常に同じであるため、必要なのは:DateTime値だけだと思います。 に似ている@txnelson 。 もしそうなら、この式はより単純です。
t1 = Modulo( :DateTime, In Days( 1 ) );
If( In Hours( 10 ) < t1 <= In Hours( 22 ),
"Dark",
"Light"
);
Re:深夜の日付とタイムスタンプの処理以下に何が問題なのかを説明します。 データテーブルのすべての行は、2つの状況のいずれかに該当します。
1)DateTimeは、OnDateとOffDateで定義された間隔の左側にあります
2)DateTimeはOnDateとOffDateの間にあります。
2番目の状況は常に期待される答えを与えます。 最初の状況は、ほぼ半分の時間で失敗します。

Re:深夜の日付とタイムスタンプの処理返信ありがとうございます。 真夜中に問題が発生しましたが、DateTimeは基本的に範囲内かどうかを評価する必要のある数値なので問題ないと思いましたが、間違っていたと思います。
この特定のデータに対してさまざまなソリューションが機能しているのがわかりますが、LightsOnとLigthsOffがここにあるものとは異なるさまざまなデータセットに適合する一般的なソリューション(おそらくそれについて言及したはずです)を探しています。
したがって、他のデータセットの場合、LightsOnは午前7時、LightsOffは午後9時になる可能性があります。これは、期間が異なると長さが異なる場合があることを意味します。
とにかくこれを回避する方法はありますか?
Brジュリー
Re:深夜に日付とタイムスタンプを処理する@JulieSAppel 、日付値の比較ができるという点で正しいと思います。 私は同意します@jthiあなたが持っている式は正しいが、LightOnDateの値は正しくないかもしれないという点でのの応答。