SSIS派生列中的日期格式

时间:2012-10-25 16:23:02

标签: sql-server sql-server-2008 ssis

我有两个问题,我有一个包含我所有数据的文本文件,在我的文本文件中Sply_DTImprt_DT

对于Sply_Dt,我必须创建getdate()并使用2012-10-25 12:04:16.09900000将其格式化为(DT_DBTIMESTAMP)(DT_DBDATE)GETDATE(),但我希望其格式为MM-DD-YY

对于Impt_DT,它在数据查看器中采用5/16/2011格式,但当我将其放入表格时,它看起来像2011-05-16 00:00:00.000,我希望它采用MM-DD-YY格式。

3 个答案:

答案 0 :(得分:2)

我认为你对datetime数据类型有些困惑。它不关心您的区域设置是美国(mm / dd / yyyy),日本(yy / mm / dd)还是英国(dd / mm / yyyy),它将始终以内部格式存储。

如果您不喜欢默认演示文稿,则可以调查SET DATEFORMAT,这可能对您的查询有意义。

当您查询数据以使其达到预期格式时,您也可以应用适当的CONVERT格式。

DECLARE @datevar datetime = '2012-10-25'
SELECT CONVERT(char(10), @datevar, 10) AS YourFomat, @datevar AS defaultFormat

如果我误解了你的问题,请澄清。

答案 1 :(得分:0)

使用派生列组件更简单的方法就像下面这样(对于MM-DD-YY格式):

LEN((DT_WSTR,2)MONTH(GETDATE()))== 1? “0”+(DT_WSTR,2)MONTH(GETDATE())):( DT_WSTR,2)MONTH(GETDATE()))+“ - ”+ LEN((DT_WSTR,2)DAY(GETDATE()))== 1? “0”+(DT_WSTR,2)DAY(GETDATE())):( DT_WSTR,2)DAY(GETDATE()))+“ - ”+ RIGHT((DT_WSTR,2)YEAR(GETDATE()),2)

答案 2 :(得分:-1)

据我了解,您的目标是改变来自文本文件的数据的日期时间格式。我建议您在数据流任务中使用派生列转换来添加列或替换现有列,然后您可以使用更常见的.NET日期运算符和派生列中的格式字符串来首先解析日期,然后进行转换它到给定格式的字符串。如果这不起作用,您可以使用数据流任务中的脚本组件来执行我所描述的操作,在这种情况下,您可以访问.NET来执行修改。

相关问题