mysql建表问题
我想建一个表,
列有 id name password create_time
当插入name和password的时候,id自动填写,create_time也自己写上当前时间。
还有就是TIME DATE TIMESTAMP感觉不太明白
因为最近写个程序出了个异常
Exception Description: The type [class java.sql.Timestamp] for the attribute [createTime] on the entity class [class com.bbs.bean.User] is not a valid type for a temporal mapping
高手给说一下吧。
------解决方案--------------------TIME DATE TIMESTAMP格式是:1988-12-25-17.12.30.000000
数据库厂商定义不同
------解决方案--------------------本人也是菜鸟一个 我也遇到过你的问题 下面这2段代码希望对你有帮助
MYSQL语句
select now(); 显示当前日期
select date_format(now(),'%y-%m-%d %h:%i:%s');
insert into emp values(9999,'test','clerk',7639,'1795-12-27 12:00:00',8000,80,10); 插入日期
从MYSQL数据库中取日期
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Time;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class TestDate {
public static void main(String[] args) throws Exception{
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/datademo?user=root&password=root");
PreparedStatement pst = conn.prepareStatement("select hiredate from demo");
ResultSet rs = pst.executeQuery();
while(rs.next())
{
Date d = rs.getDate("hiredate");
//Time t = rs.getTime("hiredate");
// //把数据库取出的Date类型转换成字符串
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
// System.out.println(sdf.format(d));
// //转换成数值类型
// Calendar c = Calendar.getInstance();
// c.setTime(d);
// System.out.println(c.get(Calendar.MONTH));
//时间戳
Timestamp ts = rs.getTimestamp("hiredate");
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
System.out.println(sdf.format(ts));
}
rs.close();
pst.close();
conn.close();
}
}
------解决方案--------------------create table user
(
id varchar(10) primary key auto_increment not null,
name varchar(20) not null,
password varchar(20),
create_date datetime
);
auto_increment 自增长
sql= ”insert into user values(?,?,?,?)”;
pstmt.setTimestamp(4, new Timestamp(user.getCreateDate().getTime()));
通过预编译PrepareStatement对象pstmt调用setTimeStamp方法
4代表sql语句中第四个问号
TimeStamp中需要参数是自1970年到“参数日”的毫秒数;
user是一个bean;包含 createDate属性和get,set方法
Date date = new Date();不带参数返回当前系统时间
Date getCreateDate(){
return date;
}
user.getCreateDate().getTime()返回当前系统时间距1970年1yue一日的毫秒数
------解决方案--------------------上一个回帖有些错误
id自增长
sql= ”insert into user values(null,?,?,?)”;