我正在阅读Sybase ASE 15.7 文档中对datetime
数据类型的描述:
datetime 列包含 1753 年 1 月 1 日和 9999 年 12 月 31 日之间的日期。在支持此粒度级别的平台上,日期时间值精确到 1/300 秒。
我觉得上面的内容很混乱。首先,这是唯一添加了“在支持这种粒度级别的平台上”警告的数据类型。这究竟是什么意思,我如何确定我的平台是否是“支持这种粒度级别”的平台之一?
此外,我不清楚能够有效地准确存储 1/300 秒意味着什么。我正在使用 JDBC 访问数据库,其中唯一合理的类型是java.sql.Timestamp。这种类型允许我检索到纳秒的精度。但考虑到在一般情况下,除以 300 需要十进制系统中的无限位数,实际上需要小数纳秒(具有无限十进制数字)来保持表示为 1/300 秒的值。所以,这意味着我无法在不损失一些精度的情况下获取存储在服务器中的值,但可以忽略不计。
最后,当我执行以下查询时:
SELECT convert(char(32), submission_date, 139) FROM some..table
Run Code Online (Sandbox Code Playgroud)
我看到如下值:
Jan 6 2014 12:36:12.420000
Sep 12 2013 13:44:57.100000
Sep 10 2014 13:47:02.240000
Sep 10 2014 13:47:07.850000
Sep 10 2014 13:47:13.346000
Sep 10 2014 13:47:19.033000
Sep 10 2014 13:47:24.533000
Sep 10 2014 13:47:30.030000
Sep 10 2014 13:47:35.636000 …
Run Code Online (Sandbox Code Playgroud) 我正在将 Sybase ASE 15.7 SP134 数据库迁移到 SQL Server 2008R2,使用 SSMA for Sybase 2014。
我面临一个问题,即 SybaseDB 中的表有 2 列数据类型为TEXT
。数据类型为“text”的 SQL Server 表在日语数据字符上不匹配。
问题是:
我们如何在迁移数据时保持与 Sybase 相同的文本?
如何在迁移过程中保持非 ASCII 字符的原样?
如果可以提供更多信息,请发表评论。