Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date Talend中拆分的日期列_Date_Talend - Fatal编程技术网

Date Talend中拆分的日期列

Date Talend中拆分的日期列,date,talend,Date,Talend,所以我有一个大文件(1300万行),日期格式为: 2009-04-08T01:57:47Z。现在我想把它分成两列, 一个日期仅为dd-MM-yyyy,另一个日期仅为hh:MM 我该怎么做呢?我猜Talend在你的日期时间戳的T和Z部分摔倒了,但这很容易解决 由于您的日期时间戳是常规模式,因此我们可以使用tExtractRegexFields组件轻松地从中提取日期和时间 您需要使用“^([0-9]{4}-[0-9]{2}-[0-9]{2})T([0-9]{2}:[0-9]{2}):[0-9]{2}

所以我有一个大文件(1300万行),日期格式为:
2009-04-08T01:57:47Z
。现在我想把它分成两列,
一个日期仅为
dd-MM-yyyy
,另一个日期仅为
hh:MM


我该怎么做呢?

我猜Talend在你的日期时间戳的T和Z部分摔倒了,但这很容易解决

由于您的日期时间戳是常规模式,因此我们可以使用tExtractRegexFields组件轻松地从中提取日期和时间

您需要使用
“^([0-9]{4}-[0-9]{2}-[0-9]{2})T([0-9]{2}:[0-9]{2}):[0-9]{2}Z
作为正则表达式,它将以yyyy-MM-dd格式捕获日期,时间为MM:HH(您需要在模式中用日期字段和时间字段替换日期时间字段)


然后,要将日期格式化为所需格式,您需要使用tMap并使用
TalendDate.formatDate(“dd-MM-yyyy”,TalendDate.parseDate(“yyyy-MM-dd”,row7.date))
以dd-MM-yyyy格式返回字符串。

您只需使用tMap和parseDate/formatate即可。没有必要也不建议使用正则表达式实现自己的日期解析逻辑

首先,使用格式
yyyy-MM-dd'T'HH:MM:ss'Z'
解析时间戳。然后,您可以使用解析的日期输出所需的格式化日期和时间信息:

  • 日期的dd-MM-yyyy
  • HH:mm
    表示时间(注意:您在问题中混淆了情况,
    mm
    表示月份)
如果将该逻辑放入tMap中:

您将获得以下信息:

  • 输入:
    • 时间戳
      2009-04-08T01:57:47Z
  • 输出:
    • 日期
      08-04-2009
    • 时间
      01:57
注意

请注意,当您使用上述格式字符串(
yyyy-MM-dd'T'HH:MM:ss'Z'
)解析时间戳时,不会解析时区信息(以“Z”作为文字)。由于许多应用程序无论如何都不会正确设置时区信息,而是始终使用“Z”,因此在大多数情况下可以安全地忽略这一点


如果您需要正确的时区处理,并且能够使用Java 7,您可以使用
yyyy-MM-dd'HH:MM:ssXXX
来解析时间戳。

那么,您计划用哪种编程语言来解决这个问题?Java还是Python,我希望它是可靠和快速的…并且在talend数据集成平台内很棒-那么,到目前为止,您尝试了什么?你的代码看起来怎么样?您必须提供一些示例、问题、错误消息等-否则人们不会帮助您解决问题。好的,我尝试在talend中使用tsplit和tmap功能。虽然我就是不能动脑。我使用了一些ETL平台。因此,使用tmap,我得到了TalendDate.formatDate(“dd-MM-yyyy”,row1.timestamp),但当我测试它时,我在线程“main”java.lang中得到了异常。错误:未解决的编译问题:时间戳是“2009-04-08T01:57:47Z”列