kettle如何获取昨天的日期--方案一(正则表达式)
先获取当前的日期,再在sql语句中获取前一天的日期
使⽤正则表达式获取当前时间
在sql语句中,可以获取前一天的日期:
select date_sub(str_to_date('2025-10-09','%Y-%m-%d'), INTERVAL 1 DAY);
INTERVAL 是间隔的意思可以将以前的sql修改为:
select *,date_sub(str_to_date(?,'%Y-%m-%d'), INTERVAL 1 DAY) dt
from orders where substr(createTime,1,10) = date_sub(str_to_date(?,'%Y-%m-%
d'), INTERVAL 1 DAY);获取前一天的数据另一个sql:
select adddate(str_to_date('2025-10-09','%Y-%m-%d'), -1);
新建转换:
通过这个工具可以获取当前时间。
在脚本中选择正则表达式脚本。为什么搞这个,因为我想从上一个步骤中获取年-月-日三个数据。
创建一个脚本,选择正则表达式,编写解析的正则表达式:
2025/09/25 10:20:07.986(\d{4})/(\d{2})/(\d{2})\s\d{2}:\d{2}:\d{2}\.\d{3}
为什么在前面的年月日需要添加括号,因为括号括起来叫做组,可以通过别的方式获取组的数据,由于其他数据我不需要获取,所以不加括号
在脚本中创建正则表达式
新建作业--设置变量,使用线连接。
运行查看结果:
结果正确,保存,留着以后使用。
继续回归到项目中:
新建转换,选中 [ 作业 ],获取变量。
接着输入选择表输入,使用如下sql语句:
select *,date_sub(str_to_date(?,'%Y-%m-%d'), INTERVAL 1 DAY) dt
from orders where substr(createTime,1,10) = date_sub(str_to_date(?,'%Y-%m-%d'), INTERVAL 1 DAY);
开始编辑:获取变量这个 job
可以点击预览一下。
创建表输出为--插入更新 操作
修改数据库中的一条数据(orders表):
回顾:整个步骤只有两步,第一步设置变量
第二步:使用变量: