申請日時が3日前のものをフィルターで表示したい

U3D4
Tera Contributor

コミュニティの皆様

申請テーブルを作成し、申請日時(日付/時刻)フィールドの値が、

現在の日付の3日以前のものをフィルターして表示させようとしております。

 

申請日時が3日以前のレコードをいくつか用意し、

添付画像2のように、フィルターを設定してみたところ、

3日前の条件に当てはまるはずのものが、抽出されておりませんでした。

 

画像1.10/29の15:00に、3日前の10/26のレコードをいくつか用意

U3D4_0-1730185503423.png

 

画像2.フィルター条件を以下のように設定

U3D4_1-1730185636706.png

 

どうやら、10/29の15:00にフィルターした場合、

10/26の15:01以降は3日前として判定されないようです。

 

日付のみを見て3日前と判定してほしいのですが、

こちらをフィルターする方法がわかりません。

何か良い方法があれば、ご教示いただけますと幸いです。

1 件の受理された解決策

ユーザーのタイムゾーンとシステムのタイムゾーンを混同しないように注意してくださいね。
ユーザープリファレンス・ユーザー設定のタイムゾーンは自由に変えて問題ありません。ユーザーの必要なタイムゾーンしてください。

そして検索もユーザーのタイムゾーンに合わせて3日間を判定できるように作られています。
リストビューはユーザーのタイムゾーンで表示されています。

ServiceNowの内部は標準時間になっています。ユーザーのタイムゾーンから変換して検索してくれています。

私が紹介したScriptを使えば、ユーザーのタイムゾーン 日本時間で何日前なのかを処理できます。そのため、システムが標準時間であっても、この方法なら、日本時間の3日間の判定が正しく出来ます。
少し難しいですが日本時間に設定したユーザーと、別のタイムゾーンのユーザーでは、リストビューの時間が変わりますし、3日間の区切りの時間も変わります。ユーザーのタイムゾーンなのでそう言うものです。

Docs GlideSystem - グローバル

GlideSystem - daysAgoEnd(数値 days) 指定された日数前の 1 日の終わりの日時を返します。

GlideSystem - daysAgoStart(数値 days) 指定された日数前の 1 日の始まりの日時を返します。

 

Scriptは難しいと言うことであれば、7日の選択肢はあるので、3日よりは少々多いですが、運用的に許されるなら7日することが簡単です。

元の投稿で解決策を見る

14件の返信14

Hitoshi Ozawa
Giga Sage
Giga Sage

Daysの代わりに4320 Minutesにするのはどうでしょうか?

ご回答いただき、ありがとうございます。

Daysの代わりに4320 Minutesで設定を行ってみたのですが、
10/29 19:00に10/26 19:01のレコードは抽出されませんでした。

やはり、時間を見ず、日付だけで3日前を判定するのは困難なのでしょうか。

 

U3D4_0-1730196171216.png

 

>どうやら、10/29の15:00にフィルターした場合、

>10/26の15:01以降は3日前として判定されないようです。

3日より前ではなく、3日前より以降の日付のレコードを探そうとされているのではないでしょうか?

3日より前は今日から3日より前のすべてのレコードになります。

3日前より以降は今日から3日前より以降のすべてのレコードになります。

 

例:

次のようなテーブルがあります。

HitoshiOzawa_0-1730243962397.png

今日は2024/10/30 8:20です。

(1)3日よりも前の日付のレコードのみを抽出する。2024-10-26日が検出されます。

HitoshiOzawa_2-1730244121066.png

(2)3日前よりも以降の日付のレコードを抽出する。時間は無視されて00:00:00から16:00:00のレコードも検出されます。また、2024-10-30日のレコードも検出されます。

HitoshiOzawa_3-1730244193215.png

(3)3日前のみのレコードを抽出する。2024-10-27日のみのすべてのレコードが検出されます。

HitoshiOzawa_1-1730244046928.png

 

>3日より前ではなく、3日前より以降の日付のレコードを探そうとされているのではないでしょうか?
はい、ご認識の通り、3日よりも前の申請日時のものを抽出しようとしております。

10/30にフィルターした際は、10/27、10/26・・・とフィルターした日から3日以前のレコードを表示したいです。

ご教示いただいた通り、2つの条件を追加してみましたが、うまくフィルターができませんでした。
私の設定方法が間違っておりますか?

画像1.フィルター前のすべてのレコード
U3D4_1-1730281005882.png

画像2.2つのフィルターをかけた状態

 

U3D4_0-1730280979202.png