Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
TIMESTAMP 値の精度を制限します。
On、Off
Off
PUBLIC グループのみに設定できます。DBA 権限が必要です。このオプションは、タイムスタンプデータがすでに格納されているデータベースに対しては有効にしないでください。
SQL Anywhere の TIMESTAMP 値の精度は、小数点以下 6 桁です。ただし、TIMESTAMP 値を小数点以下 3 桁などにトランケートする他のソフトウェアとの互換性を維持するために、truncate_timestamp_values オプションを On に設定すると、SQL Anywhere が格納する小数点以下の桁数を制限できます。default_timestamp_increment オプションは、TIMESTAMP 値を小数点以下何桁でトランケートするかを決定します。
Mobile Link 同期に対し、このオプションを設定する場合は、最初の同期の実行前に設定する必要があります。
データベースサーバーが truncate_timestamp_values と default_timestamp_increment の組み合わせで指定されたものより細かい TIMESTAMP 値を検出した場合、エラーがレポートされます。
通常、データベースをアンロードしてそれを truncate_timestamp_values 値と default_timestamp_increment 値が設定されている新しいデータベースに再ロードする方法が、確実に適切な TIMESTAMP 値を使用する一番簡単なソリューションです。ただし、テーブル内の TIMESTAMP カラムのタイプにより、次のように行うこともできます。
TIMESTAMP カラムが DEFAULT TIMESTAMP または DEFAULT UTC TIMESTAMP で定義されている場合 (つまり、ローが変更されるとデータベースサーバーによって値が自動的に更新される)、truncate_timestamp_values オプションを変更する前にテーブル内のすべてのローを削除する必要があります。ローは DELETE 文または TRUNCATE TABLE 文を使用して削除します。
TIMESTAMP カラムが DEFAULT TIMESTAMP または DEFAULT UTC TIMESTAMP 以外で定義されている場合、UPDATE 文を実行して文字列に値を割り当てて、TIMESTAMP に戻します。次に例を示します。
UPDATE T SET ts = CAST( DATEFORMAT( ts, 'yyyy/mm/dd hh:nn:ss.ss' ) AS TIMESTAMP );
この手順は必要とされる精度より低下する可能性があります。使用するフォーマット文字列は、保持する精度の桁数によります。
たとえば、default_timestamp_increment オプションを 100000 に設定すると、秒の部分は小数点以下 1 桁の後でトランケートされるので、"2000/12/05 10:50:53.700" のような値を格納できるようになります。