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 选项 [数据库] [MobiLink 客户端]

限制时间戳值的精度。

允许值

On、Off

缺省值

Off

作用域

只能为 PUBLIC 组设置。需要 DBA 权限。不应为已包含时间戳数据的数据库启用此选项。

注释

在 SQL Anywhere 中,TIMESTAMP 的值精确到六个小数位。然而,为保持与其它软件(可能会将 TIMESTAMP 值截断为三个小数位)的兼容性,您可以将 truncate_timestamp_values 选项设置为 On,以限制 SQL Anywhere 存储的小数位数。default_timestamp_increment 选项确定将 TIMESTAMP 的值截断为几位小数。

对于 MobiLink 同步,如果要设置此选项,则必须在执行第一次同步之前进行设置。

如果数据库服务器发现 TIMESTAMP 值的精度比 truncate_timestamp_values 和 default_timestamp_increment 的组合所指定的精度高,则会报告一个错误。

大多数情况下,确保使用正确的 TIMESTAMP 值的最简单方法是,卸载数据库然后重新将其装载到已设置 truncate_timestamp_values 和 default_timestamp_increment 值的新数据库中。不过,根据表中 TIMESTAMP 列的类型,也可以进行以下操作:

  • 如果 TIMESTAMP 列用 DEFAULT TIMESTAMP 或 DEFAULT UTC TIMESTAMP 来定义(这样,修改行时将由数据库服务器自动更新该值),则必须先删除表中的所有行,然后再更改 truncate_timestamp_values 选项。您可以使用 DELETE 或 TRUNCATE TABLE 语句来删除行。

  • 如果 TIMESTAMP 列用 DEFAULT TIMESTAMP 和 DEFAULT UTC TIMESTAMP 之外的其它值来定义,则可以执行将值转换为字符串然后又转换回 TIMESTAMP 的 UPDATE 语句。例如,

    UPDATE T
       SET ts = CAST( DATEFORMAT( ts, 'yyyy/mm/dd hh:nn:ss.ss' )
     AS TIMESTAMP );

    注意,此过程可能会损失过多的精度。使用的格式字符串取决于要保留的精度的位数。

另请参见
示例

将 default_timestamp_increment 选项设置为 100000 会导致在秒部分中的第一个小数位后进行截断,从而会存储一个像 '2000/12/05 10:50:53:700' 这样的值。