我试图将当前日期和时间插入MS-SQL数据库的变量中。我使用这种格式:
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); Calendar cal = Calendar.getInstance(); System.out.println(dateFormat.format(cal.getTime()));
结果我得到了这个2013-01-28 09:29:37.941
我在数据库中的字段已定义,datetime并且正如我在其他具有相同字段的表中所看到的那样,日期和时间的写法完全与此2011-07-05 14:18:33.000相同。
datetime
我尝试使用在Java程序内执行的查询插入数据库,但出现此错误
SQL异常:状态:S0003消息:将varchar数据类型转换为该值的datetime数据类型超出范围。错误:242
我的查询是这样的:
query = "INSERT INTO Companies CreatedOn"+ "VALUES ('" + dateFormat.format(cal.getTime()) + "')"
但我不明白我在做什么错。
根据错误描述,您正在向数据库中插入错误的类型。请参阅JDBC到MSSQL。您应该将Calendar转换为Timestamp。
尝试使用:
PrepareStatement statement = connection.prepareStatement("INSERT INTO Companies CreatedOn VALUES(?)"); java.sql.Timestamp timestamp = new java.sql.Timestamp(cal.getTimeInMillis()); statement.setTimestamp(1, timstamp); int insertedRecordsCount = statement.executeUpdate();