2

我正在创建一个包含一些信息的 ASCII 输出文件,并且我的两个字段要求日期和时间位于压缩十进制字段 (COMP-3) 中。我正在使用 SQL 和 SSIS 来生成我的文件。

Field Name     Format       Length    Picture
Date           YYYYMMDD     5         S9(8) C-3
Time           HHMMSS       4         S9(6) C-3

我搜索了多个站点,但仍然无法弄清楚如何将日期/时间转换为压缩十进制字段。任何帮助将不胜感激。

以下站点http://www.simotime.com/datapk01.htm#TablePackedDecimal提供了有关打包字段的信息。我了解如何使用打包字段,但并不真正了解如何打包字段。谢谢!

4

1 回答 1

5

如果将整数日期(即 20120123)存储为字符串,则十六进制表示将是 0x3230313230313233,其中 32 = 2、30 = 0 等,即 8 个字节(即 32 30 31 32 30 31 32 33)的存储空间。

在压缩十进制格式中,相同字符串的表示形式为: 0x020120123F F 有点表明这是一个无符号整数。其他数字存储为每个数字的半个字节。因此,您可以看到一个常见的日期字符串适合 5 字节(即 02 01 20 12 3F )字段。

因此,要在 SSIS 中使用它,您可能必须按照上述@billinkc 进行操作,并使用脚本转换来转换字段。这样做的机制是计算您号码中的数字,在左侧填充 0 以使您的字符最多为 9(comp-3 5)和 7(comp-3 4),然后使用您的日期中的数字构造一个十六进制字符串或时间并在末尾添加 F(如果您的目的地需要签名号码,则添加 C)。

于 2012-01-23T18:44:31.020 回答