Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用JSP将当前时间和未来时间插入MySQL数据库_Java_Mysql_Jsp_Tomcat7 - Fatal编程技术网

Java 如何使用JSP将当前时间和未来时间插入MySQL数据库

Java 如何使用JSP将当前时间和未来时间插入MySQL数据库,java,mysql,jsp,tomcat7,Java,Mysql,Jsp,Tomcat7,我很难在MySQL数据库中插入一个合适的日期时间。数据库设置为: aucID,int(11)AI 价格浮动 开始,漂浮 开始日期时间 <%@ page import ="java.sql.*" %> <% try{ String itemid = request.getParameter("itemid"); String startprice = request.getParameter("startprice");

我很难在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());
    }


    %>
enddatetime,日期时间

<%@ 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);

我的解决方案是将表中的TimeStamp字段配置为默认值Now(),因此每次在DB中添加内容而不提供该字段时,都会自动填充该字段。

对于
startdatetime
可以使用
ON UPDATE
触发器。另外,
DATETIME
还有一个可选参数
fsp
,它是一秒的小数位数。为什么只调用MySql命令行并键入\help datetime?如果可以更改数据库,请阅读要包含的任何包?无法解析获取
DateFormat
请尝试仅使用SimpleDataFormat,如
SimpleDataFormat=new SimpleDataFormat(“yyy-MM-dd-hh.MM.ss”)datetime
转换为
date
?如果OP想要插入DB的确切时间怎么办?仍然出现错误
SimpleDataFormat
无法作为类型解决。您使用的是什么包?
java.sql.Timestamp
java.time.LocalDateTime
java.time.format.DateTimeFormatter
。将立即尝试。几分钟。所以使用准备好的语句,
setTimestap(3,xz)
3做什么?它是否将其放入第三个插槽?这是参数索引(第一个参数(?)是1,第二个是2,以此类推)