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