【问题标题】:Convert integer to date DDMMYYYY将整数转换为日期 DDMMYYYY
【发布时间】:2021-11-25 15:28:30
【问题描述】:

我正在上传一个 Excel 数据表。在工作表中,我有一个要转换为日期的数字列。所以 40955 应该看起来像 04.09.1955 (DDMMYYYY) 有人可以帮我吗?我尝试使用数据转换转换组件并显示错误。

PP

【问题讨论】:

  • 您确定40955 应该看起来像04.09.1955,因为Excel 将日期存储为数值(日期序列),其中40955 表示16.02.2012。请检查以下答案:stackoverflow.com/questions/13850605/…

标签: ssis


【解决方案1】:

这里的主要障碍是您的值不是一种易于使用的格式。

要执行您指定的操作,需要将值分解为其部分,再次连接然后转换。所有这些都可以在一个语句中完成。为了解释,我展示了以下步骤。

DECLARE 
  @someval int = 40955,
  @dateval int,
  @dated   date
;

SELECT
  -- single extraction steps
  @someval % 100 AS yearval,
  ( @someval / 100 ) % 100 AS monthval,
  ( @someval / 10000 ) AS dayval
;

SELECT 
  --@dateval = 
    -- extract year and push it to front
    ( @someval % 100 ) * 10000 
    -- extract month and push into middle
    + ( @someval / 100 ) % 100 * 100
    -- extract day and keep at end
    + ( @someval / 10000 )
;
SELECT 
  -- clip all elements into single integer
  @dateval = 
    ( @someval % 100 ) * 10000 
    + ( @someval / 100 ) % 100 * 100
    + ( @someval / 10000 )
;
SELECT
  -- 112 = yyyymmdd format
  @dated = CONVERT( date, CAST( @dateval AS varchar(8) ), 112 )
;
SELECT
  -- show as standard (format 120) date aka ISO 8601 readable
  @dated AS Dated
;

但是我怀疑您从 Excel 收到的值是儒略日期。在这种情况下,以下答案将提供解决方案:

convert Excel Date Serial Number to Regular Date

请记住,在 SSIS 中,您需要将此编码包装到列或转换中。

【讨论】:

    猜你喜欢
    • 2013-04-10
    • 1970-01-01
    • 2020-09-07
    • 1970-01-01
    • 1970-01-01
    • 2021-08-17
    • 2018-10-16
    相关资源
    最近更新 更多