如果第一行不是';使用SSIS Excel数据源输入日期
我正在尝试读取包含日期列的excel工作表。SSIS似乎将该列视为数字列,因为第一行为空 以下是Excel列: 当我在ssis Excel源代码编辑器中预览它时,它会显示:如果第一行不是';使用SSIS Excel数据源输入日期,ssis,Ssis,我正在尝试读取包含日期列的excel工作表。SSIS似乎将该列视为数字列,因为第一行为空 以下是Excel列: 当我在ssis Excel源代码编辑器中预览它时,它会显示: 您可以看到我的TermDate列显示为数字,而不是日期。非常感谢任何帮助欢迎使用Excel的日期存储。最后,我在C#应用程序中使用了这个函数,从数字日期切换到日期时间日期 /// <summary> /// Seriously? For the loss /// <see cr
您可以看到我的TermDate列显示为数字,而不是日期。非常感谢任何帮助欢迎使用Excel的日期存储。最后,我在C#应用程序中使用了这个函数,从数字日期切换到日期时间日期
/// <summary>
/// Seriously? For the loss
/// <see cref="http://www.debugging.com/bug/19252"></see>
/// </summary>
/// <param name="excelDate">Number of days since 1900-01-01</param>
/// <returns>The converted days to date</returns>
public static DateTime ConvertXlsdtToDateTime(int excelDate)
{
DateTime dt = new DateTime(1899, 12, 31);
// adjust for 29 Feb 1900 which Excel considers a valid date
if (excelDate >= 60)
{
excelDate--;
}
return dt.AddDays(excelDate);
}
//
///真的吗?弥补损失
///
///
///自1900-01-01以来的天数
///到目前为止已转换的天数
公共静态日期时间转换器XLSDTTODATETIME(int excelDate)
{
DateTime dt=新的日期时间(1899,12,31);
//调整为1900年2月29日,Excel将其视为有效日期
如果(Excel日期>=60)
{
excelDate--;
}
返回dt.AddDays(excelDate);
}
您可以在脚本转换中使用该公式来生成日期时间值,也可以使用丑陋的表达式来执行相同的操作。很晚了,所以我假设你的约会是在上面提到的1900-02-29之后
DATEADD(“日期”,术语日期-1,(DT_日期)“1899-12-31”)
下面是一个使用输入数据的示例,上面的表达式在派生列中生成ExcelDate
。我携带了术语DateAsDate
,以确保按照预期匹配日期
如果可能,将数据作为Excel文件以外的任何文件发送。SSI和Excel不能很好地配合使用。如果您无法获得真正的.txt文件,则.csv文件将比Excel文件工作得更好。