首页 > 解决方案 > 使用合适的日期格式创建 MySQL 表 dd/MMM/yyyy:hh:mm:ss Z

问题描述

所以我正在尝试使用 JDBC 创建一个 mysql 表。在此表中,我想要一个包含以下时间戳的列:

01/Nov./2018:12:01:43 +0100 这是格式:dd/MMM/yyyy:hh:mm:ss Z

//--------------------- 编辑现在这个 SQL 语句成功地创建了我的表:

 "CREATE TABLE IF NOT EXISTS `FilteredLogs` ("
 + "id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,"
 + "`TIME` DATETIME," 
 + "`IP` varchar(20) NOT NULL," 
 + "`USER` varchar(1000) NOT NULL," 
 + "`URI` varchar(1000) NOT NULL," 
 + "`STATUS` INT NOT NULL)"; 

现在我尝试将数据放入表中:

        PreparedStatement input = con.prepareStatement("insert into "+tableName+"(TIME, IP, USER, URI, STATUS) values(?,?,?,?,?);");

        input.setDate(1, java.sql.Date.valueOf(formattime));
        input.setString(2, iplog);
        input.setString(3, userlog);
        input.setString(4, urilog);
        input.setInt(5, statuslog);
        input.execute();

这会引发 IllegalArgumentException,其中“formattime”是一个字符串,其值为:“01/Nov/2018:00:00:17 +0100”

标签: mysqlsqldate

解决方案


您的TIME列日期类型将DATETIME不只是date在数据呈现时使用格式

"CREATE TABLE IF NOT EXISTS `FilteredLogs` ("
 + "id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, "
 + "`TIME` DATETIME " 
 + "`IP` varchar(20) NOT NULL, " 
 + "`USER` varchar(1000) NOT NULL, " 
 + "`URI` varchar(1000) NOT NULL, " 
 + "`STATUS` INT NOT NULL"

推荐阅读