Java中如何把非系统时间HH:mm或yyyy-MM-dd HH:mm插入到SQL中

时间:2021-05-10 22:04:31
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

19 个解决方案

#1


to_date(?,'yyyy-mm-dd hh24:mi:ss')

oracle中的办法

#2


各位高手,进来看看啊,  没人我自己顶
代码如下:
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中  哎   自己顶

#3


to_date(?,'yyyy-mm-dd hh24:mi:ss')

oracle中的办法   是啊Oracle中可以用to_date()  但是不知道SQL怎么做啊
   呵呵

#4


帮顶

#5


200708131125  转换成时间不就好了  晕,这种问题也来问

#6


正确方法:
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmm");
String time = "200708131125";
try {
Date date = sdf.parse(time);
} catch (ParseException e) {
e.printStackTrace();
}

#7


String time="200708131125";
String sql="insert into table(time) values("+"to_date('"+time+"',yyyymmddhh24mi')";
db.executeUpdate(sql);
这样不是很直接

#8


up

#9


非常感谢

#10


各位大佬   还是不行啊  要什么样的HH:mm和yyyy-MM-dd HH:mm  格式才能插到SQL中啊
    主要还是插到SQL中的格式不对啊   但是还是谢谢各位    希望如果可以小贴个代码看看 谢谢

#11


java.SQL.Date sqlDate=new java.SQL.Date(date.getTime());  //date是java.util.Date对象
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对象 会方便很多

#12


用zhanghaotao()的方法可以得到时间字符串对应的Date对象

再按照指定模式串构造一个SimpleDateFormat对象,调用其format(Date date)方法,将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”。

#13


>>PreparedStatement ps = db.getPreparedStatement(sql);
>>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.

#14


up

#15


SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String strTime = sdf.format(new Date());


字符串的格式如:2007-08-17 12:25:25

#16


谢谢大家  搞了很久还是没有搞出来。不过后来我用数据库中改字符型,就可以解决问题了。只是以后查询,和对它的操作要多做几个转换啊。麻烦了些!!!!  呵呵,再次感谢大家。。
     祝各位七夕情人节快乐!!!!

#17


oracle
SELECT to_date('200708131125','yyyymmddhh24mi') FROM dual;

#18


在java中用format转换成sql可以插入的类型就可以了
一般最好把时间做为string  这样比较好实现

#19


呵呵,我最后也是用String格式。来操作时间的。因为在数据库中有对时间很多的限制。很不好操作。   呵呵!!!!   谢谢各位了!!!

#1


to_date(?,'yyyy-mm-dd hh24:mi:ss')

oracle中的办法

#2


各位高手,进来看看啊,  没人我自己顶
代码如下:
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中  哎   自己顶

#3


to_date(?,'yyyy-mm-dd hh24:mi:ss')

oracle中的办法   是啊Oracle中可以用to_date()  但是不知道SQL怎么做啊
   呵呵

#4


帮顶

#5


200708131125  转换成时间不就好了  晕,这种问题也来问

#6


正确方法:
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmm");
String time = "200708131125";
try {
Date date = sdf.parse(time);
} catch (ParseException e) {
e.printStackTrace();
}

#7


String time="200708131125";
String sql="insert into table(time) values("+"to_date('"+time+"',yyyymmddhh24mi')";
db.executeUpdate(sql);
这样不是很直接

#8


up

#9


非常感谢

#10


各位大佬   还是不行啊  要什么样的HH:mm和yyyy-MM-dd HH:mm  格式才能插到SQL中啊
    主要还是插到SQL中的格式不对啊   但是还是谢谢各位    希望如果可以小贴个代码看看 谢谢

#11


java.SQL.Date sqlDate=new java.SQL.Date(date.getTime());  //date是java.util.Date对象
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对象 会方便很多

#12


用zhanghaotao()的方法可以得到时间字符串对应的Date对象

再按照指定模式串构造一个SimpleDateFormat对象,调用其format(Date date)方法,将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”。

#13


>>PreparedStatement ps = db.getPreparedStatement(sql);
>>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.

#14


up

#15


SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String strTime = sdf.format(new Date());


字符串的格式如:2007-08-17 12:25:25

#16


谢谢大家  搞了很久还是没有搞出来。不过后来我用数据库中改字符型,就可以解决问题了。只是以后查询,和对它的操作要多做几个转换啊。麻烦了些!!!!  呵呵,再次感谢大家。。
     祝各位七夕情人节快乐!!!!

#17


oracle
SELECT to_date('200708131125','yyyymmddhh24mi') FROM dual;

#18


在java中用format转换成sql可以插入的类型就可以了
一般最好把时间做为string  这样比较好实现

#19


呵呵,我最后也是用String格式。来操作时间的。因为在数据库中有对时间很多的限制。很不好操作。   呵呵!!!!   谢谢各位了!!!

#20