1.需求是这样的
可以选择如上三种导入格式
2.java批量导入
我测试选择1、3和4方式,在Java直接get的时候会显示成数字如 第一种"44562",三四种大概都是"44555:12312312313123" 这种形式,但第二种直接get就会直接获得可以入库的标准 如"2022年1月1日 10点10分"文章来源:https://www.toymoban.com/news/detail-537996.html
1)所以我们对症下药
问题背景:java中使用poi进行excel导入数据时,日期格式在数据库中存放为varchar2类型。
问题:存放数据日期读取数据为“44439”的数字,因判断格式类型为yyyy-mm-dd无法存放并提醒
解决办法:日期为“44439”的数字,无法使用SimpleDateFormat的parse方法进行转换。
需要引入import org.apache.poi.hssf.usermodel.HSSFDateUtil;HSSFDateUtil工具类处理时间
Date setupTime = HSSFDateUtil.getJavaDate(Double.valueOf(dateStrings));
dateStrings为读取的时间格式数据即:“44439”的数字,转换为data并再次自定义格式转换为string
Date setupTime = HSSFDateUtil.getJavaDate(Double.parseDouble(dateStrings));
SimpleDateFormat Format =new SimpleDateFormat("yyyy-MM-dd");
dateStrings =Format.format(setupTime);
————————————————
版权声明:本文为CSDN博主「zkhyzy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43887257/article/details/117814782
2)知识认知
varchar是标准sql里面的;varchar2是oracle提供的独有的数据类型。
varchar对于汉字占两个字节,对于数字,英文字符是一个字节,占的内存小;varchar2一般情况下把所有字符都占两字节处理。具体要看数据库使用的字符集,比如GBK,汉字就会占两个字节,英文1个,如果是UTF-8,汉字一般占3个字节,英文还是1个。
varchar对空串不处理;varchar2将空串当做null来处理。
varchar存放固定长度的字符串,最大长度是2000;varchar2是存放可变长度的字符串,最大长度是4000。
如果是要更换不同的数据库,例如mysql,那么就用varchar;如果就用oracle,那么用varchar2比较好一点。
————————————————
版权声明:本文为CSDN博主「江北有野火」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_43191910/article/details/114677382
3)直接使用
批量导入肯定实在for循环下,那么直接上代码文章来源地址https://www.toymoban.com/news/detail-537996.html
//2022年1月1日 ↓
if(importDataQuery.getDateFormat().equals(DateUtil.STANDARD_FORMAT_YMD_CH)){
Date date = HSSFDateUtil.getJavaDate(Double.parseDouble(v.toString()));
sDate = DateUtil.dateFormatToString(date, DateUtil.STANDARD_FORMAT_YMD_CH);
}
//2022年1月1日 10点10分 ↓
else if (importDataQuery.getDateFormat().equals(DateUtil.STANDARD_FORMAT_YMD_HM_CH)) {
Date date = DateUtil.stringFormatToDate(v.toString(),DateUtil.STANDARD_FORMAT_YMD_HM_CH);
sDate = DateUtil.dateFormatToString(date, DateUtil.STANDARD_FORMAT_YMD_HM_CH);
}
//2022-01-01 ↓
else if (importDataQuery.getDateFormat().equals(DateUtil.STANDARD_FORMAT_YMD_P)) {
Date date = HSSFDateUtil.getJavaDate(Double.parseDouble(v.toString()));
sDate = DateUtil.dateFormatToString(date, DateUtil.STANDARD_FORMAT_YMD_P);
}
//2022-01-01 10:00:00 ↓
else if (importDataQuery.getDateFormat().equals(DateUtil.STANDARD_FORMAT_YMDHMS_P)) {
Date date = HSSFDateUtil.getJavaDate(Double.parseDouble(v.toString()));
sDate = DateUtil.dateFormatToString(date, DateUtil.STANDARD_FORMAT_YMDHMS_P);
}
DateUtil工具类中的dateFormatToString 自己手New就可以
一个Date转String
public static String dateFormatToString(Date date, String format) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
return simpleDateFormat.format(date);
}
一个String转Date
public static Date stringFormatToDate(String date, String format) throws ParseException {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
return simpleDateFormat.parse(date);
}
4)完美入库
到了这里,关于Java Excel导出遇到的时间转换问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!