【问题标题】:SSIS Get Date from a File NameSSIS 从文件名中获取日期
【发布时间】:2018-10-10 00:54:09
【问题描述】:

我的文件名为...文件 - 20170101.xlsx

我有以下作为变量

FilePath,数据类型字符串,File - 20170101

作为派生列我有

(DT_I8)LEFT(RIGHT(@[User::FilePath],8),4)

我得到了这个工作,但只给了我部分值..(只有 3 个数字,我需要 8 个)

给我输出 101.. 我需要将文件名保存为不同的日期格式吗?我试过文件 - 01012017

我试过了,但是不行

(DT_I4)LEFT(RIGHT(@[User::FilePath],8),4)

我正在尝试获取20170101,然后我将添加数据转换以将其变成日期

它不起作用..请任何想法

【问题讨论】:

  • 创建脚本组件比尝试使用 VBScript 函数解析字符串要容易得多
  • 你得到的四个数字是多少?根据你的样本数据,你应该只使用(DT_I8)RIGHT(@[User::FilePath],8)。但也许您的样本数据不正确。如果您实际描述输出,它会有所帮助。
  • 给我输出 101.. 我需要将文件名保存为不同的日期格式吗?我试过文件 - 01012017
  • 您的公式将得到 101。

标签: visual-studio-2010 ssis


【解决方案1】:

所以变量FilePath 的值不是 File - 20170101 如你所说,它是File - 20170101.xlsx 对吗?

在写你的问题时请小心。

您可以通过一些实验自己解决这些问题。

首先,

RIGHT(@[User::FilePath],8) 

给你

101.xlsx

因此,

RIGHT(@[User::FilePath],13) 

会给你

20170101.xlsx

LEFT(RIGHT(@[User::FilePath],13),8)

会给你

20170101

把它变成一个日期比较棘手。

这解释了如何做到这一点

How to convert string in format yyyyMMdd to date using SSIS expression?

【讨论】:

【解决方案2】:

尝试脚本任务

string fpath=""; //Set your filepath here

string fname = System.IO.Path.GetFileNameWithoutExtension(fpath);

DateTime dt = DateTime.Parse(fname.Substring(5, 2) + "/" + fname.Substring(7, 2) + "/" + fname.Substring(1, 4));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多