記事
· 9 hr 前 2m read

ObjectScript での日付の比較方法(ObjectScript での SQL 関数実行方法)

これは InterSystems FAQ サイトの記事です。

ObjectScript で日付の比較を行う場合、一旦 $HOROLOG 形式(内部数値)に変換することで算出しやすくなりますが、SQL 関数を利用して算出することもできます。

ObjectScript から SQL 関数を実行するには、%SYSTEM.SQL.Functions クラスを使用します。

※ 2021.1以前のバージョンでは、%SYSTEM.SQL クラスを使用します。

%SYSTEM パッケージは、システム・オブジェクトと呼ばれ ObjectScript では $SYSTEM 特殊変数を利用して以下の構文で実行します。

  $SYSTEM.サブパッケージ名.クラス名.メソッド名() または $SYSTEM.クラス名.メソッド名()

 

以下、SQL 関数 DATEDIFF を使用して日付の比較を行う例です。

USER>write $system.SQL.Functions.DATEDIFF("dd","2025-01-20","2025-03-20")
59

 

分での比較

USER>write $system.SQL.Functions.DATEDIFF("mi","2025-01-20","2025-03-20")
84960

 

秒での比較

USER>write $system.SQL.Functions.DATEDIFF("ss","2025-01-20","2025-03-20")
5097600

 

この他、DATEADD 関数を使って指定日付に日付や時刻を追加することもできます。

指定の日付に10年追加する

USER>write $system.SQL.Functions.DATEADD("year",10,"2025-01-20")
2035-01-20 00:00:00

 

指定の日付の25日前

USER>write $system.SQL.Functions.DATEADD("day",-25,"2025-01-20")
2024-12-26 00:00:00

 

指定日時の16時間前

USER>write $system.SQL.Functions.DATEADD("hour",-16,"2025-01-20 13:10:00")
2025-01-19 21:10:00

 

指定の日付時刻の指定箇所のみを取り出す DATEPART 関数の実行例は以下の通りです。

hour を取り出す

USER>write $system.SQL.Functions.DATEPART("hour","2025-01-20 13:10:00")
13

 

dayofyear を返す

USER>write $system.SQL.Functions.DATEPART("dayofyear","2025-10-20 13:10:00")
293

 

dayを返す

USER>write $system.SQL.Functions.DATEPART("day","2025-10-20 13:10:00")
20

 

この他のSQL関数については、ドキュメントをご参照ください。

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください