我正在尝试将当前日期和时间插入到 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.
我尝试使用我在 java 程序中执行的查询插入到数据库中,但出现此错误
SQL Exception: State : S0003 Message: The conversion of a varchar data type to a datetime data type of the value is out of range. Error : 242
我的查询是这样的:
query = "INSERT INTO Companies CreatedOn"+
"VALUES ('" + dateFormat.format(cal.getTime()) + "')"
但我不明白我做错了什么。
最佳答案
根据error description ,您正在向数据库中插入不正确的类型。参见 JDBC to MSSQL .您应该将日历转换为 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();
关于Java:插入表日期时间数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14558289/