SQLデータベースのDatetimeフィールドにアクセスする実行時の動作は以下の通りです。
NULL値
ユーザが、Datetimeに組み合わせたカラムのどちらかにNULL値を入力し、他方にNULL以外の値を入力した場合、レコード更新時に実行エラーが表示され、レコードはデータベースに書き込まれません。
Datetime項目の範囲/位置付け指定
範囲は、カラムとローカル変数の[範囲]特性、または日付部分や時間部分、または両方の部分に対して実行時のエンドユーザによる範囲指定で定義できます。エンドユーザが両方の部分を選択した場合、Magicエンジンは定義内容を統合して範囲制限を実行します。これによって、データベース上の実際のフィールドで範囲制限を行なう場合と同じ処理を実行します。
変数項目では、このような自然な形で範囲処理を行なうことはできません。これは、統合された範囲指定は、日付項目と時刻項目に分離された状態での範囲指定と異なることを意味します。
日付部分だけが選択された場合、Magic xpaは通常の範囲処理を実行します。この場合、時刻の範囲は、"00:00:00"から"23:59:99" として処理されます。
時刻部分だけが選択された場合、Magic xpaはレコードを絞る込むためにデータベース側の機能を使用します。
Datetimeフィールドの範囲/位置付けの一方の値がNULLで、他方がNULLでない場合、Where句は、NULL になります。
Magic SQL
MagicSQLによる範囲指定は、Datetimeカラムの日付部分や時刻部分を個別にアクセスします。MagicSQLでは、Datetimeカラムを1つのカラムとして扱うことができません。日付カラムや時間カラム(Datetimeの一部です。)を参照するように記述すると、Magic xpaは対応レコードの検索に、データベース固有の機能を使用します。
DB SQL
DB SQLによる範囲指定は、データベースに送るSQLコマンドを記述することができます。日付または時刻フィールドへの参照指定をDB SQLで定義した場合、データベースのフィールド名が表示されます。
Datetimeフィールドを使用したソート
ソートは範囲処理に似ています。日付と時刻の両方のフィールドを使用したり、片方を指定してソートすることができます。Magic xpaはデータベースのDatetimeカラムに対してデータベース本来のソート機能を使用するため、日付フィールドとそれに続く時刻フィールドの両方のソート処理が迅速に行なわれます。Datetimeフィールドの日付部分のソートは、このフィールドがソート一覧の最後に表示された場合、データベースでDatetimeカラム上での本来のソート処理が使用されます。
注意: |
異なるソート定義を必要としない限り、日付カラムと時刻カラムの両方を指定してソートするほうがパフォーマンスの上でも推奨します。 |
結合リンク
Datetimeペアの一部を含んでいるジョインキーによる結合リンクを使用する場合、時間と日付部分の両方を位置付け式に指定する必要があります。これらの式の値は、適用されたキー制限に従って自動的に適用されます。
Datetimeフィールドが結合リンクに表示されるがキーとして定義されていない場合、さらに位置付け式が指定されている場合、(メインソースの他のカラムを参照していて、両方のカラムがメインソースのDatetimeペアを参照しているように)位置付け式がリンク条件として設定されている場合、ただ1つの条件がステートメントに表示されます。これ以外の場合、適切な関数がWhere句に追加されます。
Datetimeカラムを含んだテーブルのAPG
Datetimeペアの一方のカラムがAPGの[カラム一覧]で「0」に設定した場合、他方のカラムも「0」になります。Datetimeペアの一方のカラムをAPGの[カラム一覧]で再選択すると、他方のカラムが最後のカラムとして追加されます。