我正在创建一个包含一些信息的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以获取有关压缩字段的信息。我知道如何使用打包字段,但并不真正了解如何打包字段。谢谢!
发布于 2012-01-24 02:44:31
如果将整数日期(即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)。
https://stackoverflow.com/questions/8974091
复制相似问题