小编典典

Java:将表中的日期时间数据插入

sql

我试图将当前日期和时间插入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异常:状态:S0003消息:将varchar数据类型转换为该值的datetime数据类型超出范围。错误:242

我的查询是这样的:

query = "INSERT INTO Companies CreatedOn"+ 
         "VALUES ('" + dateFormat.format(cal.getTime()) + "')"

但我不明白我在做什么错。


阅读 175

收藏
2021-03-17

共1个答案

小编典典

根据错误描述,您正在向数据库中插入错误的类型。请参阅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();
2021-03-17