所以我有一个大文件(1300万行)和日期格式为:
2009-04-08T01:57:47Z
。现在我想将它分成2列,
一个只有日期为dd-MM-yyyy
和其他与时间只有hh:MM
。在Talend日期列拆分
我该怎么办呢?
所以我有一个大文件(1300万行)和日期格式为:
2009-04-08T01:57:47Z
。现在我想将它分成2列,
一个只有日期为dd-MM-yyyy
和其他与时间只有hh:MM
。在Talend日期列拆分
我该怎么办呢?
你可以简单地使用tMap和parseDate/formatDate来做你想做的事。这是既不必要也不建议用正则表达式来实现你自己的日期解析逻辑。
首先,使用格式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'T'HH:mm:ssXXX
来解析您的时间戳。
我猜你的日期时间戳的T和Z部分是Talend倒下的,但这很容易解决。
由于您的日期时间戳处于常规模式,我们可以使用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格式返回字符串。
那么,你打算用哪种编程语言来解决这个问题? – Jon
Java或Python,我希望它是可靠和快速的......并且在talend数据集成平台 – sephiroth85
伟大 - 那么,你到目前为止尝试过什么?你的代码如何看起来像? 你必须提出一些例子,问题,错误信息等 - 否则人们不会帮助你解决你的问题。 – Jon