Java中如何把非系统时间插入到SQL中
我现在是在C/S架构下,把考勤文本文件中的字符串(如200708131125)。
200708131125(详细表示为:2007年08月13日 11时25分)
我现在可以用Date.valueOf("yyyy-MM-dd") 这种格式插入到SQL中。
但是现在 HH:mm 和 yyyy-MM-dd HH:mm 格式却不知道做。每次都是提示数据格式不对。
小时:分钟(HH:mm) 或 年月日时分(yyyy-MM-dd HH:mm )
现在问题是:yyyy-MM-dd格式可以插入。但是HH:mm 和 yyyy-MM-dd HH:mm
我现在是在C/S架构下,把考勤文本文件中的字符串(如200708131125)。
200708131125(详细表示为:2007年08月13日 11时25分)
我现在可以用Date.valueOf("yyyy-MM-dd") 这种格式插入到SQL中。
但是现在 HH:mm 和 yyyy-MM-dd HH:mm 格式却不知道做。每次都是提示数据格式不对。
小时:分钟(HH:mm) 或 年月日时分(yyyy-MM-dd HH:mm )
现在问题是:yyyy-MM-dd格式可以插入。但是HH:mm 和 yyyy-MM-dd HH:mm
代码如下:
FileDialog dlg = new FileDialog(shell, SWT.OPEN);
dlg.setFilterPath("d:/食堂用餐系统");
dlg.setFilterNames(new String[] { "记事本(*.txt)" });
dlg.setFilterExtensions(new String[] { "*.txt" });
String fileName = dlg.open();
if (fileName != null) {
try {
MessageDialog.openInformation(shell, "确认提示:", "您要读取的内容是:"+fileName);
} catch(OutOfMemoryError ex){
MessageBox message = new MessageBox(shell, SWT.ICON_ERROR | SWT.YES);
message.setText("错误");
message.setMessage("文本文件太大了,缓存溢出异常!");
message.open();
ex.printStackTrace();
return;
}
} else
return;
try {
db = new SQLManager();
int nLineCount = 0;//行数
//File file = new File("c:\\aaa.txt");
File file = new File(fileName);
//MessageDialog.openInformation(shell, "确认提示:", "您要读取的内容是:"+fileName);
BufferedReader in = new BufferedReader(new FileReader(file));
String strLine = "";
String strYear = "";
String strTime = "";
String strDatetime = "";
String strFlag = "";
String strKahao = "";
String strKajihao = "";
while ((strLine = in.readLine()) != null) {
strYear = strLine.substring(0, 8);
strTime = strLine.substring(8, 12);
strDatetime = strLine.substring(0, 12);
strFlag = strLine.substring(12, 13);
strKahao = strLine.substring(13, 19);
strKajihao = strLine.substring(19, 22);
String aa = strYear.substring(0, 4)+"-"+strYear.substring(4, 6)+"-"+strYear.substring(6, 8);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date date8 = sdf.parse(aa);//解析
//java.sql.Date 这样也是可以的
SimpleDateFormat ma = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date aaaa = new java.util.Date(date8.getTime());
System.out.println("yyyy-MM-dd时间格式:"+aaaa);
System.out.println(ma.format(aaaa));
//String bb = "11:11";
String bbb = strTime.substring(0, 2)+":"+strTime.substring(2, 4);
SimpleDateFormat sdff = new SimpleDateFormat("HH:mm");
java.util.Date datef8 = sdff.parse(bbb);//解析
SimpleDateFormat maf = new SimpleDateFormat("HH:mm");
java.util.Date bbbb = datef8;
System.out.println("HH:mm时间格式:"+bbbb);
System.out.println(maf.format(bbbb));
//String cc = "2008-11-23 11:11";
String cc = strYear.substring(0, 4)+"-"+strYear.substring(4, 6)+"-"+strYear.substring(6, 8)+" "+strTime.substring(0, 2)+":"+strTime.substring(2, 4);
SimpleDateFormat sdfff = new SimpleDateFormat("yyyy-MM-dd HH:mm");
java.util.Date dateff8 = sdfff.parse(cc);//解析
SimpleDateFormat maff = new SimpleDateFormat("yyyy-MM-dd HH:mm");
java.util.Date cccc = dateff8;
System.out.println("yyyy-MM-dd HH:mm时间格式:"+cccc);
System.out.println(maff.format(cccc));
System.out.println(strYear);
System.out.println(strTime);
System.out.println(strDatetime);
System.out.println(strFlag);
System.out.println(strKahao);
System.out.println(strKajihao);
System.out.println(strLine);
System.out.println("行数:"+nLineCount);
String sql = "insert into cf_yszl3(nyr,sj,flag,kh,kjh) values(?,?,?,?,?)";
PreparedStatement ps = db.getPreparedStatement(sql);
ps.setDate(1, Date.valueOf(aa));//maff.format(aa).substring(0, 8)
ps.setString(2, strTime);
ps.setString(3, strFlag);
ps.setString(4, strKahao);
ps.setString(5, strKajihao);
ps.execute();
ps.close();
//MessageDialog.openInformation(shell, "Biao Ti", "执行了插入语句3");
//MessageDialog.openInformation(shell, "插入成功:", "插入好了5!!!");
++nLineCount;
}
MessageDialog.openInformation(shell, "处理数据成功:", "您已完成了数据的处理!!!");
} catch (Exception eee) {
eee.printStackTrace();
}很乱,主要是(HH:mm)和(yyyy-MM-dd HH:mm)不知道怎么插入到SQL中 哎 自己顶
呵呵
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmm");
String time = "200708131125";
try {
Date date = sdf.parse(time);
} catch (ParseException e) {
e.printStackTrace();
}
String sql="insert into table(time) values("+"to_date('"+time+"',yyyymmddhh24mi')";
db.executeUpdate(sql);
这样不是很直接
主要还是插到SQL中的格式不对啊 但是还是谢谢各位 希望如果可以小贴个代码看看 谢谢
Time sqlTime=new Time(date.getTime()); //java.sql.Time
String strDate=sqlDate.toString()+" "+sqlTime.toString(); //这个就是yyyy-MM-dd HH:mm当然 你完全可以用java.util.Date的getXXX()方法来构件一个字符串 不过好象getYear()不是从公元元年开始计算的 其他的也是要看看他们的基准日期最好的 用Hibernate框架 可以直接存取Date对象 会方便很多
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
//该模式串与要转换的原始时间串对应,如下
String time = "2007-08-13 11:25";
Date date = sdf.parse(time);
SimpleDateFormat sdf2=new SimpleDateFormat("yyyy-MM-dd");
//该模式串为要将Date类型转换成的时间字符串格式
String timeStr=sdf2.format(date);timeStr就应该为“2007-08-13”。
>>ps.setDate(1, Date.valueOf(aa));//maff.format(aa).substring(0, 8)
>>ps.setString(2, strTime);use ps.setTimestamp() instead of ps.setDate(),
just hava a try.
maybe it works.
String strTime = sdf.format(new Date());
字符串的格式如:2007-08-17 12:25:25
SELECT to_date('200708131125','yyyymmddhh24mi') FROM dual;
一般最好把时间做为string 这样比较好实现