我在sqlserver里面建立一个表Users,里面有个字段RegisterTime为TimeStamp类型,
sql语句是insert into Users(firstname,lastname,username,password,RegisterTime) values('li','yang','liyang','password','2005-01-01 10:30:30')
结果执行的时候报错“java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][SQL Server]???????? varchar ????? timestamp ??????? 'eBookShop.dbo.Users'?? 'RegisterTime'????? CONVERT ????????? ”
看来是类型不匹配的问题,请问大家日期类型数据怎么插入到sql表中?
sql语句是insert into Users(firstname,lastname,username,password,RegisterTime) values('li','yang','liyang','password','2005-01-01 10:30:30')
结果执行的时候报错“java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][SQL Server]???????? varchar ????? timestamp ??????? 'eBookShop.dbo.Users'?? 'RegisterTime'????? CONVERT ????????? ”
看来是类型不匹配的问题,请问大家日期类型数据怎么插入到sql表中?
解决方案 »
- 请问 IntelliJ IDEA 是否支持条件断点,怎么设置,我怎么没找到?
- 清空JTable
- vb语言 TempA = b(j): b(j) = b(N - KK + 1): b(N - KK + 1) = TempA 翻译为java是什么
- ======刚开始用JDBC往oracle里插入数据,select,update正常,insert抛出异常======
- java返回值的问题
- java的包的问题!!
- MySQL一个小问题请教大家!
- 各位大哥救我!
- java现在JDK的最新版本是什么啊,到那里下载,能不能给我个最新的下载地址
- tell me why??有关jdbc for sqlserver
- jsp(tomcat)配置Oracle数据库连接池时出现的问题
- 求一个用接口实现的多重继承的范例
java.util.Date currentTime_fw = new java.util.Date();
Timestamp Time_fw= new Timestamp(currentTime_fw.getTime());获得了这样的一个Timestamp类型的日期,但是如果要插入到sql表中该怎么插入呢?
我的sql语句:
StringBuffer sql = new StringBuffer("INSERT INTO Users(FirstName, LastName, UserName,Password,RegisterTime) ");
sql.append("VALUES ('");
sql.append(firstName);
sql.append("' ,'");
sql.append(lastName);
sql.append("' ,'");
sql.append(userName);
sql.append("' ,'");
sql.append(password);
sql.append("' ,'");
sql.append(Time_fw.toString());//请帮我看看这句sql语句是否有错?
sql.append("')");
s.executeUpdate(sql.toString());
在要插入的地方,先用?代替,
然后再用setDate()或者
什么方法把一个java.sql.Date
对象关联起来,就可以了
java.sql.Timestamp
* Created on 2005-9-2
*/
import java.sql.Date;/**
* @author raito
*/
public class StringToDate { /**
* @param sign_date
* @return
*/
public static Date parse(String sign_date) {
if(sign_date==null){
return null;
}else{
Date date;
System.out.print("#"+sign_date+"#");
int year=Integer.parseInt(sign_date.substring(0,sign_date.indexOf("-")));
int month=Integer.parseInt(sign_date.substring(sign_date.indexOf("-")+1,sign_date.lastIndexOf("-")));
int day=Integer.parseInt(sign_date.substring(sign_date.lastIndexOf("-")+1,sign_date.length()));
date=new Date(year-1900,month-1,day);
return date;
}
}
}
java.sql.Timestamp
----------------------------------------
我用的就是java.sql.Timestamp啊,我之前不把它转换成String类型不行的。
DateFormat df=DateFormat.getInstance();
Date date=new Date();
String dt=df.format(date);
String sql="insert into table values ('"+dt+"')";
Date date=new Date();
DateFormat df=DateFormat.getDateInstance(DateFormat.SHORT);
String dt=df.format(date);
String sql="insert into table values ('"+dt+"')";
我的目的实际上是为了插入一个日期型数据,但是在sql表中我把字段类型设置成timestamp,不要意思,看来是我把timestamp误以为就是datetime类型了,后来把该字段换成datetime类型就好了
你的错误无非就是数据类型不匹配,在数据库中是Timestamp型,而insert的时候是string,当然也就不对了,楼上很多提出把插入的数据转换为timestamp类型就行。如
insert into @YOURTABLE(@data) values(@timestamp)不必要把@timestamp转换成string