SSIS-以导出日期时间戳的形式发布(格式:yyyy-mm-dd 00:00:00:000

SSIS-以导出日期时间戳的形式发布(格式:yyyy-mm-dd 00:00:00:000,ssis,Ssis,我有一个SSIS包,用于从包含日期时间戳列yyyy mm dd 00:00:00:000的自定义表中导出数据。创建文本文件时,会删除最后一个“0”。我将数据类型更改为数据库时间戳[DT_DBTIMESTAMP]在ssis中,但它不起作用。对我来说效果很好,你在做什么?如果你将数据类型作为非字符串的任何内容引入,那么可以修剪所有尾随零,因为写入100.00的值与100.000000000的值相同。如果尾随零很重要,那么必须将其转换为字符串类型以保留这些值ues 源查询 我有一行,作为日期时间数据类

我有一个SSIS包,用于从包含日期时间戳列yyyy mm dd 00:00:00:000的自定义表中导出数据。创建文本文件时,会删除最后一个“0”。我将数据类型更改为数据库时间戳[DT_DBTIMESTAMP]在ssis中,但它不起作用。

对我来说效果很好,你在做什么?如果你将数据类型作为非字符串的任何内容引入,那么可以修剪所有尾随零,因为写入100.00的值与100.000000000的值相同。如果尾随零很重要,那么必须将其转换为字符串类型以保留这些值ues

源查询 我有一行,作为日期时间数据类型和使用ISO格式的字符串发送到数据流

SELECT
    D.Val AS ValueAsDateTime
,   CONVERT(char(24), D.Val, 121) AS ValueAsString
FROM
( 
    VALUES 
    ( CAST('2015-03-17T23:59:59.997' AS datetime)) 
) D (Val);
输出 我定义了一个CSV,它分别使用DT_DBTIMESTAMP和DT_STR作为类型

ValueAsDateTime,ValueAsString
2015-03-17 23:59:59.997000000,2015-03-17 23:59:59.997 
包裹 害怕简单的包装

Biml复制 如果您已安装,以下Biml将生成我的复制包

<Biml xmlns="http://schemas.varigence.com/biml.xsd">
    <!-- Create a basic flat file source definition -->
    <FileFormats>
        <FlatFileFormat
            Name="FFF"
            CodePage="1252"
            RowDelimiter="CRLF"
            IsUnicode="false"
            FlatFileType="Delimited"
            ColumnNamesInFirstDataRow="true"
        >
            <Columns>
                <Column
                    Name="ValueAsDateTime"
                    DataType="DateTime"
                    Delimiter=","
                    ColumnType="Delimited"
                />
                <Column
                    Name="ValueAsString"
                    DataType="AnsiString"
                    Delimiter="CRLF"
                    InputLength="20"
                    MaximumWidth="20"
                    Length="20"
                    CodePage="1252"
                    ColumnType="Delimited"
                    />
            </Columns>
        </FlatFileFormat>
    </FileFormats>

    <!-- Create a connection that uses the flat file format defined above-->
    <Connections>
        <FlatFileConnection
            Name="CM_FF"
            FileFormat="FFF"
            FilePath="C:\ssisdata\29520836.txt"
            DelayValidation="true"
        />
        <OleDbConnection
            Name="CM_OLE"
            ConnectionString="Data Source=localhost\dev2014;Initial Catalog=tempdb;Provider=SQLNCLI11.1;Integrated Security=SSPI;Auto Translate=False;"
        />

    </Connections>

    <!-- Create a package to illustrate how to apply an expression on the Connection Manager -->
    <Packages>
        <Package
            Name="so_29520836"
            ConstraintMode="Linear"
        >

            <!-- Create a single variable that points to the current file -->
            <Variables>
                <Variable DataType="String" Name="QuerySource">SELECT D.Val As ValueAsDateTime, CONVERT(char(24), D.Val, 121) AS ValueAsString FROM (VALUES(CAST('2015-03-17T23:59:59.997' AS datetime)))D(Val);</Variable>
            </Variables>

            <!-- Add a foreach file enumerator. Use the above -->
            <Tasks>

                <Dataflow Name="DFT Import file" DelayValidation="true">
                    <Transformations>
                        <OleDbSource ConnectionName="CM_OLE" Name="OLE_SRC Query">
                            <VariableInput VariableName="User.QuerySource" />
                        </OleDbSource>
                        <FlatFileDestination ConnectionName="CM_FF" Name="FF_DST"></FlatFileDestination>
                    </Transformations>
                </Dataflow>
            </Tasks>
        </Package>
    </Packages>
</Biml>

这是一个简单的数据提取frpm源表。我正在按原样导出数据,没有特殊格式。我们收到的CallDate格式为YYYY-MM-DD 00:00:00:000,但当创建以.txt文件管道分隔的文件时,它会删除最后一个毫秒数字,即零。@Arsee双击源和目标之间的行。在元数据中b找到您的CallDate列,然后用报告的数据类型编辑您的问题。您还可以查看源表并报告该实体上的数据类型。我找到了。CONVERTVARCHAR,,126我在OLE DB source SQL命令中添加了它。