练习kettle时想要以日期月为单位划分数据集,结果在sql查询时发现匹配不上,语句如下
select d.*,rownum from DSPAGE d where rownum < 50 and UPDATETIME like '2009%'
查询结果为空

缩短两位后
select d.*,rownum from DSPAGE d where rownum < 50 and UPDATETIME like '20%'

不知什么缘故2位可以查,4位就无法匹配了,但根本原因是这列为DATETIME格式,通过查找资料,可以用以下sql语句进行匹配
select d.*,rownum from DSPAGE d where rownum < 50 and to_char(UPDATETIME,'yyyy-MM-dd HH24:MI:SS') like '%2009%'

原理就是将UPDATETIME列先转换为字符串格式再进行模糊查询,需要注意的是,转换时将月份改为两位数,所以匹配9月时应匹配09
网友评论