【问题标题】:SSIS - last day of month from an input dateSSIS - 从输入日期开始的一个月的最后一天
【发布时间】:2018-08-03 09:12:22
【问题描述】:

我有一个从平面文件接收日期字段的包。有没有快速将此日期转换为同月最后一天的方法?

例如 输入:01.08.2019 输出:2019 年 8 月 31 日

提前非常感谢

【问题讨论】:

    标签: date ssis flat-file


    【解决方案1】:

    我经常使用这个:

    用@d 替换您的日期列。

    dateadd("d",-1, --Gets last day of current month
      dateadd("mm",1, --Gets 1st day of next month
        (DT_DATE)(month(@d) + "/1/" + year(@d)) -- Gets first day of current month
    ))
    

    【讨论】:

    • 您可能需要将月份和年份转换为字符串
    • 在没有日期表的情况下,这是我所知道的下一个最佳解决方案 - 加一个月,然后减一天。
    【解决方案2】:

    一种方法是通过Lookup

    包 -

    所以,基本上你读取文件然后将它们传递给Lookup,这将为它们中的每一个运行并在数据库中查询以找出输入日期的月份的最后一天。

    您需要为数据库查询设置OLEDB 连接,下面的SQL 查询将为您完成这项工作 -

    DECLARE @date VARCHAR(10) = ?
    SET @date = REPLACE(@date,'.','/');
    SET @date = CONVERT(CHAR(10),CONVERT(DATETIME,LEFT(@date,10),105),101);
    SET @date = EOMONTH(@date);
    SET @date = SUBSTRING(@date, 9, 2) + '/' + SUBSTRING(@date, 6, 2)  + '/' + SUBSTRING(@date, 1, 4);
    SELECT REPLACE(@date,'/','.') AS Result;
    

    【讨论】:

      猜你喜欢
      • 2022-11-24
      • 2015-06-11
      • 1970-01-01
      • 1970-01-01
      • 2010-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多