時間字段拼接
近期由於項目中導出數據的時間字段拆分成零散字段,需要進行重新拼接整合。
首先對於小時字段不足兩位數的進行補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裏的文字行轉列,列轉行?