如何使用 JSP 将当前时间和未来时间插入 MySQL 数据库
How to insert current time and future time into MySQL database using JSP
我很难将正确的日期时间插入 MySQL 数据库。数据库设置为:
aucID, int(11) AI
最低价,浮动
起拍价,浮动
开始日期时间、日期时间
结束日期时间、日期时间
<%@ page import ="java.sql.*" %>
<%
try{
String itemid = request.getParameter("itemid");
String startprice = request.getParameter("startprice");
String minprice = request.getParameter("minprice");
String startdate = request.getParameter("current");
String enddate = request.getParameter("length");
System.out.println(itemid);
System.out.println(startprice);
System.out.println(minprice);
System.out.println(startdate);
System.out.println(enddate);
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://xxx","xxx", "xxx");
Statement st = con.createStatement();
st.executeUpdate("INSERT INTO auctions (minprice, startprice, startdatetime, enddatetime, itemid) VALUES ('" + minprice + "','" + startprice + "','" + itemid + "','" + ADD CURRENT DATE + "','" + ADD FUTURE DATE + "')");
con.close();
String URL = "addauction.jsp";
response.sendRedirect(URL);
}
catch (SQLException e){
System.err.println("Got an exception!");
System.err.println(e.getMessage());
}
%>
我正在建立一个基本的拍卖网站。我需要能够设置创建拍卖的时间并设置拍卖结束的未来日期。
如果你也能告诉我如何比较时间,那将非常有帮助。
提前致谢!
如果您使用的是准备好的语句,则可以使用 java.sql.Timestamp
类型绑定时间戳参数。
String sql = "insert into tbl (col1, col2, col3) values (?, ?, ?)";
PreparedStatement stmt = dbConnection.prepareStatement(sql);
stmt.setTimestamp(3, Timestamp.valueOf(new LocalDateTime().now()));
stmt.executeUpdate();
MySQL 也接受 DATETIME
值作为格式为 YYYY-MM-DD HH:MM:SS
的字符串。您可以使用 DateTimeFormatter
:
生成此格式的时间字符串
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
// 2018-08-03 03:50:17
LocalDateTime.now().format(formatter);
// 2018-09-03 03:50:17
LocalDateTime.now().plusMonths(1).format(formatter);
现在您所要做的就是为您的表单参数(startdate
和 enddate
)创建正确的 LocalDateTime
,然后绑定一个 Timestamp
参数或连接格式化的 DATETIME
字符串。
首先,您需要将字符串 "startdate" 转换为日期对象。然后添加一个未来的日期,或根据需要操纵日期。
//Convert string to date.
String string = "January 2, 2010";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh.mm.ss");
Date date = format.parse(string);
System.out.println(date); // Sat Jan 02 00:00:00 GMT 2010
//Plus future day.
DateTime dtOrg = new DateTime(date);
DateTime dtPlusOne = dtOrg.plusDays(1);
对我有用的解决方案是将 Table 中的 TimeStamp 字段配置为具有默认的 Now(),因此每次您在数据库中添加内容但不提供该字段时,它将自动为您填写。
我很难将正确的日期时间插入 MySQL 数据库。数据库设置为:
aucID, int(11) AI
最低价,浮动
起拍价,浮动
开始日期时间、日期时间
结束日期时间、日期时间
<%@ page import ="java.sql.*" %>
<%
try{
String itemid = request.getParameter("itemid");
String startprice = request.getParameter("startprice");
String minprice = request.getParameter("minprice");
String startdate = request.getParameter("current");
String enddate = request.getParameter("length");
System.out.println(itemid);
System.out.println(startprice);
System.out.println(minprice);
System.out.println(startdate);
System.out.println(enddate);
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://xxx","xxx", "xxx");
Statement st = con.createStatement();
st.executeUpdate("INSERT INTO auctions (minprice, startprice, startdatetime, enddatetime, itemid) VALUES ('" + minprice + "','" + startprice + "','" + itemid + "','" + ADD CURRENT DATE + "','" + ADD FUTURE DATE + "')");
con.close();
String URL = "addauction.jsp";
response.sendRedirect(URL);
}
catch (SQLException e){
System.err.println("Got an exception!");
System.err.println(e.getMessage());
}
%>
我正在建立一个基本的拍卖网站。我需要能够设置创建拍卖的时间并设置拍卖结束的未来日期。
如果你也能告诉我如何比较时间,那将非常有帮助。
提前致谢!
如果您使用的是准备好的语句,则可以使用 java.sql.Timestamp
类型绑定时间戳参数。
String sql = "insert into tbl (col1, col2, col3) values (?, ?, ?)";
PreparedStatement stmt = dbConnection.prepareStatement(sql);
stmt.setTimestamp(3, Timestamp.valueOf(new LocalDateTime().now()));
stmt.executeUpdate();
MySQL 也接受 DATETIME
值作为格式为 YYYY-MM-DD HH:MM:SS
的字符串。您可以使用 DateTimeFormatter
:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
// 2018-08-03 03:50:17
LocalDateTime.now().format(formatter);
// 2018-09-03 03:50:17
LocalDateTime.now().plusMonths(1).format(formatter);
现在您所要做的就是为您的表单参数(startdate
和 enddate
)创建正确的 LocalDateTime
,然后绑定一个 Timestamp
参数或连接格式化的 DATETIME
字符串。
首先,您需要将字符串 "startdate" 转换为日期对象。然后添加一个未来的日期,或根据需要操纵日期。
//Convert string to date.
String string = "January 2, 2010";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh.mm.ss");
Date date = format.parse(string);
System.out.println(date); // Sat Jan 02 00:00:00 GMT 2010
//Plus future day.
DateTime dtOrg = new DateTime(date);
DateTime dtPlusOne = dtOrg.plusDays(1);
对我有用的解决方案是将 Table 中的 TimeStamp 字段配置为具有默认的 Now(),因此每次您在数据库中添加内容但不提供该字段时,它将自动为您填写。