kettle日期参数使用

在使用日期类型参数进行比较大小的时候,务必保证传递的日期类型参数和比较的类型保持一致。

在ETL过程中使用日期类型的参数很是常见,例如SQL如下:

SELECT b.display_name,
a.company_id,
date_format(max(first_send_notice_date), ‘%Y-%m’) accMonth,
count(*) totalReport,
sum(CASE WHEN a.takeoff_time > ‘1980’ THEN 1 ELSE 0 END) removed ,
sum(CASE WHEN a.takeoff_time > ‘1980’
AND a.takeoff_time < a.first_send_notice_date + interval 1 DAY THEN 1 ELSE 0 END) 1DAY ,
sum(CASE WHEN a.takeoff_time >=a.first_send_notice_date + interval 1 DAY
AND a.takeoff_time < a.first_send_notice_date + interval 3 DAY THEN 1 ELSE 0 END) 2_3day ,
sum(CASE WHEN a.takeoff_time >=a.first_send_notice_date + interval 3 DAY
AND a.takeoff_time < a.first_send_notice_date + interval 5 DAY THEN 1 ELSE 0 END) 4_5day ,
sum(CASE WHEN a.takeoff_time >=a.first_send_notice_date + interval 5 DAY
AND a.takeoff_time < a.first_send_notice_date + interval 7 DAY THEN 1 ELSE 0 END) 6_7day,
sum(CASE WHEN a.takeoff_time >=a.first_send_notice_date + interval 7 DAY THEN 1 ELSE 0 END) 7DAY,
current_timestamp ETL_DTE
FROM FACT_matchedVideo a
JOIN DIM_trackingWebsite b ON a.trackingWebsite_id = b.trackingWebsite_id
WHERE a.first_send_notice_date >= date_format(‘ FIRSTDAYOFLASTMONTH,ANDa.firstsendnoticedate<dateformat( {FIRSTDAYOFCURMONTH}’, ‘%Y-%m-%d’)
AND a.count_send_notice> 0
AND a.hide_flag = 2
AND b.website_type in(‘ugc’,’hybrid’)
GROUP BY 1, 2
其中where过滤条件之一为:

a.first_send_notice_date >= date_format(‘${FIRSTDAYOFLASTMONTH}’, ‘%Y-%m-%d’)

在参数传递过来的时候,kettle的日期参数传递过来的时候,日期格式为:

‘yyyy-MM-dd HH:mm:ss’ 形式为 ‘2015/05/01 00:00:00’

而数据库里面的日期格式为’yyyy-MM-dd HH:mm:ss’

那么两者比较的话就会出错,如下面的错误:

select ‘2015/05/01 00:00:00’ > ‘2015-05-02 00:00:00’;
+———————————————–+
| ‘2015/05/01 00:00:00’ > ‘2015-05-02 00:00:00’ |
+———————————————–+
| 1 |
+———————————————–+

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值