Azure DataFactory将字符串(年为2位)转换为日期

Azure DataFactory将字符串(年为2位)转换为日期,azure,datetime,azure-data-factory,azure-data-factory-2,azure-data-factory-pipeline,Azure,Datetime,Azure Data Factory,Azure Data Factory 2,Azure Data Factory Pipeline,我目前正在Azure Data Factory中使用一组CSV日志文件,我需要处理这些文件并将其输入SQL表 问题在于,某些列包含时间戳,其中年份由2位数字表示(与完整的4位数字年份相反)。 例如,01/03/17 22:10:33的日期格式为MM/dd/yy HH:MM:ss 如何将其转换为日期或将“20”添加到年份的值?(例如,01/03/17 22:10:33将变成01/03/2017 22:10:33)。这在代码中非常简单,但我不确定如何在Azure数据工厂的数据流中实现 编辑:正如@H

我目前正在Azure Data Factory中使用一组CSV日志文件,我需要处理这些文件并将其输入SQL表

问题在于,某些列包含时间戳,其中年份由2位数字表示(与完整的4位数字年份相反)。 例如,
01/03/17 22:10:33
的日期格式为
MM/dd/yy HH:MM:ss

如何将其转换为日期或将“20”添加到年份的值?(例如,
01/03/17 22:10:33
将变成
01/03/2017 22:10:33
)。这在代码中非常简单,但我不确定如何在Azure数据工厂的数据流中实现


编辑:正如@HimanshuSinha msft所提到的,在解析之前必须删除撇号才能工作。我在数据流中添加了一个额外的步骤:
toTimestamp(子字符串({Column Name},2,length({Column Name})-1),'MM/dd/yy hh:MM:ss')
,它成功了

ADF数据流完全支持Java标准日期/时间格式化程序。在您的情况下,您可以按原样转换为timestamp(),以获得排列的日期/时间组件,然后转换为您希望使用toString()实现的输出字符串,如下所示:

toString(toTimestamp('01/03/17 22:10:33','MM/dd/yy HH:MM:ss'),'MM/dd/yyyy HH:MM:ss')

更多详情:


这是一个对我来说是个拦路虎的把戏,但是试试这个-

  • 沉下去
  • 映射
  • 点击输出格式
  • 选择要将数据存储到接收器中的数据格式或时间格式

  • 选择所需的任何定义格式。

    我尝试使用
    toTimestamp
    函数,但结果仍然相同,列的值仍然显示为
    Null
    。我在数据流上添加了一个步骤来添加新列,并输入了以下表达式
    toTimestamp({Start Date},“MM/dd/yy HH:MM:ss”)
    在上面的示例中,开始日期有2个空格。你在格式化程序中说明了吗?是的。csv上的值也被撇号包围,比如
    '01/03/17 22:10:33'
    ,我甚至尝试将格式设置为
    'MM/dd/yy HH:MM:ss'
    (引号之间)。我不知道发生了什么事。我目前尝试使用1和2个空格,以及带撇号和不带撇号-都不起作用你能从CSV文件中粘贴一个示例行吗?查看数据,我发现日期是单引号,这就是@MarkKromerMSFT建议不起作用的原因,我做了一个小测试,如果我们可以删除单引号,它将工作良好。我尝试了下面的表达,它确实有效,请务必让我们知道它是如何运作的。toTimestamp(子字符串(Somedate,2,长度(Somedate)-1),'MM/dd/yy hh:MM:ss')