java.sql.Timestamp 和 timedelta 中不支持的操作数类型“+”的 NIFI Executescript UTC 错误

Posted

技术标签:

【中文标题】java.sql.Timestamp 和 timedelta 中不支持的操作数类型“+”的 NIFI Executescript UTC 错误【英文标题】:NIFI Executescript UTC Error for unsupported operand type "+" in java.sql.Timestamp and timedelta 【发布时间】:2020-06-10 09:06:30 【问题描述】:

我正在尝试将一个流文件拆分为多个流文件,基础是在即将到来的流文件中添加一个月的日期。

例如。 "to":"2019-12-31T00:00:00Z","from":"2019-03-19T15:36:48Z" 是我在流文件中得到的日期。所以我必须将此单个流文件拆分为 11 个具有日期范围的流文件,例如

"to":"2019-04-19","from":"2019-03-19"
"to":"2019-05-19","from":"2019-04-19" 
"to":"2019-06-19","from":"2019-05-19"
....... and so till
"to":"2019-12-31","from":"2019-12-19" .

我一直在尝试使用示例输入将文件拆分为日常流文件:

`

 begin = '2018-02-15'
 end = '2018-04-23'
 dt_start = datetime.strptime(begin, '%Y-%m-%d')
 dt_end = datetime.strptime(end, '%Y-%m-%d')
 one_day = timedelta(days = 1)
 start_dates = [dt_start]
 end_dates = []
 today = dt_start
 while today <= dt_end:
     tomorrow = today + one_day
 print(tomorrow)

`

但我的 Execute 脚本处理器出现错误。 nifi flow screenshot

【问题讨论】:

【参考方案1】:

由于您使用的是 Jython,您可能必须将 today 强制转换为某个 Jython/Python 时间变量或调用 today.getTime() 才能对其进行算术运算。

【讨论】:

我使用了 'today.getTime()' 但它将时间更改为 long ,这再次为 long 和 timedelta 提供了不受支持的操作数 我不是 Python 专家,但我认为您需要将 long 转换为 datetime,以便添加 timedelta,可能使用datetime.datetime.fromtimestamp(myNumber)

以上是关于java.sql.Timestamp 和 timedelta 中不支持的操作数类型“+”的 NIFI Executescript UTC 错误的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Joda-Time 与 java.sql.Timestamp 一起使用

flink JDBC 类型转换 java.time.LocalDateTime cannot be cast to java.sql.Timestamp

java时间和日期类型

@Temporal 注解使用

sqlserver数据库中为datetime类型,通过myeclipse逆向工程生成实体类中属性为啥是java.sql.Timestamp

JDBC入门--- 时间类型大数据