Date型を使う際に気を付けないといけないこと[outsystems]

ベースはC#なのでC#と同じようにdate型にはNullが入らない。
ただし、最大値最小値はC#とは異なる。

一応Outsystems公式に最大値と最小値の情報は載っているので引用しておきます。
この辺のデータの狭さはDBに合わせたらしい。

サポートされる範囲は[#1900-01-01 00:00:00#, #3000-12-31 23:59:59#]

Outsystems公式より引用

Nullを読み込むと「#1900-01-01 00:00:00#」に自動変換される。
ただし、出力時にNullに時間変換されることはない。

この仕様によって何が起こるかというと

日時で判定するようなシステムだと、Nullが入っているのか#1900-01-01 00:00:00#が入っているのかの判定がOutsystems上ではできない。やりたいならSQLなどの代替手段を使用する必要がある。

C#だと実装の時にNullを入れようとしてエラーで気が付くけど、Outsystemsだと自動でEntityが作成されてて「NullDate()」も用意されているから最後まで気がつかないこともある。
NullDateを代入した時に設定される値はもちろん「#1900-01-01 00:00:00#」です。

あと全然話変わるけどデバッグするとUTCで時刻が表示されるので何も知らないと純粋に戸惑う。