时间字段拼接
近期由于项目中导出数据的时间字段拆分成零散字段,需要进行重新拼接整合。
首先对于小时字段不足两位数的进行补0操作。
IF(LEN(D2)<2,"0"&D2,D2)
同样操作分钟和秒字段,进行补0操作。
然后用&字符将年月日 时分秒字段进行拼接。
A2&"-"&B2&"-"&C2&" "&I2&":"&J2&":"&K2
将拼接后的数据导入Mysql数据库,时间time字段设置成varchar字符串类型。
由于需要统计前一天晚八点至次日晚八点的数据,所以需要写SQL语句。
解决思路:将第二天0点至20点的数据算作前一天的数据。
select sum(a.link_rsl_h),DATE_FORMAT(a.time_R,'%Y-%m-%d') from
(with temp as(
select sum(link_rsl) as link_rsl_h,count(time) as count_h,STR_TO_DATE(time, '%Y-%m-%d %H') as time_h
from rain_deal group by STR_TO_DATE(time, '%Y-%m-%d %H'))
select link_rsl_h,
(case when hour(time_h) <20 then DATE_SUB(time_h,INTERVAL 1 DAY)
else time_h end) as time_R,
time_h from temp) a
group by DATE_FORMAT(a.time_R,'%Y-%m-%d')
注意case when的语法,如果 case 字段 when 会不生效,需要调整为 case when 字段。
判断小时字段的值:
DATE_FORMAT(time_h,'%H') <20或者hour(time_h) <20
字符串转日期:
STR_TO_DATE(time, '%Y-%m-%d %H')
获取前一天日期:
DATE_SUB(time_h,INTERVAL 1 DAY)
日期格式化:
DATE_FORMAT(a.time_R,'%Y-%m-%d')
行列转换
方法一:
第一种方法,在Excel里选中要转换成列的单元格,Ctrl+C复制
看一下Excel最下方状态栏显示是多少行,就在空白区域选中多少列。
点击右键,选择“选择性粘贴”,里面有个“转置(T)”,点击后就会发现,行已转为列。
方法二:
也可以使用公式,这是第二种方法。首先确定要转成列的有多少行,然后某一行的空白区域选择同样数目的单元格。
直接输入公式“=TRANSPOSE(array)”,其实你只要输入前面几个字母,不论大小,Excel就会自动查找对应的公式显示出来,然后双击该公式,选中你要转换的列,按组合键Ctrl+shift+enter即可。
同样道理,也是运用上面2种方法将列转为行。
参考链接:如何将Excel里的文字行转列,列转行?