Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - データベース管理 » データベースの設定 » データベース・オプション » データベース・オプションの概要 » アルファベット順のオプション・リスト

 

truncate_timestamp_values オプション [データベース] [Mobile Link クライアント]

タイムスタンプ値の精度を制限します。

指定可能な値

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" のような値を格納できるようになります。