Begrenzt die Auflösung von Zeitstempelwerten
On, Off
Off
Kann nur für die PUBLIC-Gruppe gesetzt werden. DBA-Berechtigung ist erforderlich. Diese Option darf nicht für Datenbanken gesetzt werden, die bereits Zeitstempeldaten enthalten.
Ein TIMESTAMP-Wert wird in SQL Anywhere auf sechs Dezimalstellen definiert. Um die Systemverträglichkeit mit anderen Datenbanken und Programmen zu gewährleisten, bei denen die TIMESTAMP-Werte auf drei Stellen gekürzt werden, können Sie die Option truncate_timestamp_values auf "On" setzen, um die Anzahl der von SQL Anywhere gespeicherten Dezimalstellen zu begrenzen. Die default_timestamp_increment-Option legt die Anzahl der Dezimalstellen fest, auf die der TIMESTAMP-Wert gekürzt wird.
Wenn Sie diese Option bei der MobiLink-Synchronisation verwenden, muss sie vor der Durchführung der ersten Synchronisation eingestellt werden.
Wenn der Datenbankserver TIMESTAMP-Werte mit einer höheren Auflösung als der findet, die sich aus der Kombination von truncate_timestamp_values und default_timestamp_increment ergibt, erscheint eine Fehlermeldung.
In den meisten Fällen ist dies die sicherste Vorgehensweise, um zu gewährleisten, dass ordnungsgemäße TIMESTAMP-Werte verwendet werden: Datenbank entladen und in eine neue Datenbank laden, in der zuvor die Werte für truncate_timestamp_values und default_timestamp_increment gesetzt wurden. Je nach dem Typ der TIMESTAMP-Spalten in Ihrer Tabelle können Sie auch folgendermaßen vorgehen:
Wenn die TIMESTAMP-Spalten mit DEFAULT TIMESTAMP oder DEFAULT UTC TIMESTAMP definiert wurden (sodass der Wert automatisch vom Datenbankserver aktualisiert wird, wenn die Zeile geändert wird), müssen Sie alle Zeilen in der Tabelle löschen, bevor die Option truncate_timestamp_values geändert wird. Sie können die Zeilen löschen, indem Sie die DELETE- oder TRUNCATE TABLE-Anweisung verwenden.
Wenn die TIMESTAMP-Spalte mit einem anderen Wert als DEFAULT TIMESTAMP oder DEFAULT UTC TIMESTAMP definiert wurde, können Sie eine UPDATE-Anweisung ausführen, die die Werte in eine Zeichenfolge und anschließend zurück in einen TIMESTAMP-Wert umwandeln. Zum Beispiel:
UPDATE T SET ts = CAST( DATEFORMAT( ts, 'yyyy/mm/dd hh:nn:ss.ss' ) AS TIMESTAMP ); |
Beachten Sie, dass bei diesem Verfahren mehr Präzision als nötig verloren gehen kann. Welche Formatzeichenfolge zu verwenden ist, hängt von der beizubehaltenden Gesamtstellenzahl ab.
Wenn die default_timestamp_increment-Option auf 100000 gesetzt wird, erfolgt die Kürzung nach der ersten Dezimalstelle im Sekundenelement, sodass ein Wert wie "2000/12/05 10:50:53:700" gespeichert werden kann.
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |