1.项目中接收客户时间入库varchar类型
当时只发现 excel格式 2022/5/20 13:30:24 只简单将‘/’替换为‘-’,入库后
造成数据格式不正确查询不到数据 按yyyy-MM-dd HH:mm:ss条件筛选
2.入库时时间格式判断并补‘0’
if (bjsj.length() < 19) {
String[] timeArray = bjsj.split(" ");
String[] localDate = timeArray[0].split("/");
String[] localTime = timeArray[1].split(":");
for (int i = 1; i < localDate.length; i++) {
localDate[i] = StringUtils.leftPad(localDate[i], 2, "0");
}
for (int i = 0; i < localTime.length; i++) {
localTime[i] = StringUtils.leftPad(localTime[i], 2, "0");
}
String newDate = String.join("-", localDate);
String newTime = String.join(":", localTime);
bjsj = newDate + " " + newTime;
} else {
bjsj = bjsj.replaceAll("/", "-");
}
原始代码只做了’/'替换‘-’
bjsj = bjsj.replaceAll("/", "-");
3.将数据库历史数据时间 修改按‘-’和‘:’截取不足两位补‘0’
3.1 分析 截取 判断长度小于2补‘0’
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(bjsj,' ',1),'-',1),
CASE WHEN
LENGTH(SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(bjsj,' ',1),'-',2),'-',-1))<2 then CONCAT('0',SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(bjsj,' ',1),'-',2),'-',-1))
ELSE SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(bjsj,' ',1),'-',2),'-',-1) end,
CASE WHEN
LENGTH(SUBSTRING_INDEX(SUBSTRING_INDEX(bjsj,' ',1),'-',-1))<2 then CONCAT('0',SUBSTRING_INDEX(SUBSTRING_INDEX(bjsj,' ',1),'-',-1))
ELSE SUBSTRING_INDEX(SUBSTRING_INDEX(bjsj,' ',1),'-',-1) end,
CASE WHEN
LENGTH(SUBSTRING_INDEX(SUBSTRING_INDEX(bjsj,' ',-1),':',1))<2 then CONCAT('0',SUBSTRING_INDEX(SUBSTRING_INDEX(bjsj,' ',-1),':',1))
ELSE SUBSTRING_INDEX(SUBSTRING_INDEX(bjsj,' ',-1),':',1) end,
CASE WHEN
LENGTH(SUBSTRING_INDEX(SUBSTRING_INDEX(bjsj,':',2),':',-1))<2 then CONCAT('0',SUBSTRING_INDEX(SUBSTRING_INDEX(bjsj,':',2),':',-1))
ELSE SUBSTRING_INDEX(SUBSTRING_INDEX(bjsj,':',2),':',-1) end,
CASE WHEN
LENGTH(SUBSTRING_INDEX(bjsj,':',-1))<2 then CONCAT('0',SUBSTRING_INDEX(bjsj,':',-1))
ELSE SUBSTRING_INDEX(bjsj,':',-1) end
from car_in_out_alert where id =2222
3.2 拼接时间字符串
UPDATE car_in_out_alert set bjsj =
CONCAT(
SUBSTRING_INDEX(SUBSTRING_INDEX(bjsj,' ',1),'-',1),
'-',
CASE WHEN
LENGTH(SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(bjsj,' ',1),'-',2),'-',-1))<2 then CONCAT('0',SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(bjsj,' ',1),'-',2),'-',-1))
ELSE SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(bjsj,' ',1),'-',2),'-',-1) end,
'-',
CASE WHEN
LENGTH(SUBSTRING_INDEX(SUBSTRING_INDEX(bjsj,' ',1),'-',-1))<2 then CONCAT('0',SUBSTRING_INDEX(SUBSTRING_INDEX(bjsj,' ',1),'-',-1))
ELSE SUBSTRING_INDEX(SUBSTRING_INDEX(bjsj,' ',1),'-',-1) end,
' ',
CASE WHEN
LENGTH(SUBSTRING_INDEX(SUBSTRING_INDEX(bjsj,' ',-1),':',1))<2 then CONCAT('0',SUBSTRING_INDEX(SUBSTRING_INDEX(bjsj,' ',-1),':',1))
ELSE SUBSTRING_INDEX(SUBSTRING_INDEX(bjsj,' ',-1),':',1) end,
':',
CASE WHEN
LENGTH(SUBSTRING_INDEX(SUBSTRING_INDEX(bjsj,':',2),':',-1))<2 then CONCAT('0',SUBSTRING_INDEX(SUBSTRING_INDEX(bjsj,':',2),':',-1))
ELSE SUBSTRING_INDEX(SUBSTRING_INDEX(bjsj,':',2),':',-1) end,
':',
CASE WHEN
LENGTH(SUBSTRING_INDEX(bjsj,':',-1))<2 then CONCAT('0',SUBSTRING_INDEX(bjsj,':',-1))
ELSE SUBSTRING_INDEX(bjsj,':',-1) end
)
where LENGTH(bjsj)<19