java date详解_Java Date 详解

1.java.sql.Date与java.util.Date比较

① java.sql.Date 只有日期,没有时间

② java.util.Date 时间日期都具备

③ ResultSet.getDate(columnInt)取得的值是java.sql.Date类型,只有日期,没有时间,就算转换为java.util.Date同样没有时间

④ java.sql.Timestamp 时间日期都具备,ResultSet.getTimestamp(columnInt) 时间日期都有

⑤ 建表 T1 用以测试,建表语句↓

create table t1(

id number not null,

charcol char default 'Y',

datecol date default sysdate,

intcol integer default 12);

insert into t1 values(1,'y',sysdate,12);

insert into t1 values(2,'n',sysdate,13);

insert into t1 values(3,null,sysdate,null);

commit;

0818b9ca8b590ca3270a3433284dd417.png

⑥ DateTest 类(测试时间转换)

package com.date;

import java.sql.Connection;

import java.sql.Date;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.sql.Timestamp;

import java.text.SimpleDateFormat;

import java.util.Calendar;

public class DateTest {

public static void main(String[] args) {

Date date = new Date(System.currentTimeMillis());

System.out.println(date);

java.util.Date date2 = new java.util.Date(System.currentTimeMillis());

System.out.println(date2);

SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");

String a = sdf.format(date2);

System.out.println(a);

Timestamp t = new Timestamp(System.currentTimeMillis());

String b = sdf.format(t);

System.out.println(b);

Calendar c = Calendar.getInstance();

c.setTime(date);

System.out.println(c.get(Calendar.MONTH));

String ss = "1898-12-12 09:08:23";

Timestamp t2 = Timestamp.valueOf(ss);

System.out.println(t2);

java.util.Date d1 = new java.util.Date();

SimpleDateFormat q = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");

System.out.println(q.format(d1));

java.sql.Date date3=new java.sql.Date(0);

java.util.Date d2=new java.util.Date (date.getTime());

Date sqlDate = new Date(date.getTime());

java.util.Date d3 = new java.util.Date(sqlDate.getTime());

System.out.println("utl获得秒数 "+d3.getSeconds());

DateTest.getSqlDate();

}

public static void getSqlDate(){

Connection con = DateTest.getConnection();

ResultSet rs = null;

PreparedStatement ps= null;

try {

ps = con.prepareStatement("select * from t1 t where t.id = 1");

rs = ps.executeQuery();

while (rs.next()) {

java.sql.Date sqlDate = rs.getDate(3);

java.util.Date utlDate = rs.getDate(3);

Timestamp tDate = rs.getTimestamp(3);

System.out.println("sqlDate "+sqlDate);

System.out.println("utlDate "+utlDate);

System.out.println("tDate "+tDate);

java.util.Date Date2 = new java.util.Date(sqlDate.getTime());

System.out.println(Date2);

}

} catch (Exception e) {

}finally{

DateTest.closeJdbc(rs, con, ps);

}

}

public static Connection getConnection(){

Connection conn = null;

try {

Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();

String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";

String userName = "slt_plat";

String passWord = "slt_plat";

conn = DriverManager.getConnection(url, userName, passWord);

} catch (Exception e) {

e.printStackTrace();

}

return conn;

}

public static void closeJdbc(ResultSet rs,Connection con,Statement pst){

if(rs!=null){

try {

rs.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

if(con!=null){

try {

con.close();

} catch (SQLException e) {

}

}

if(pst!=null){

try {

pst.close();

} catch (SQLException e) {

}

}

}

}2.数据库配置对应Date

① @Temporal(TemporalType.DATE)数据库只记录日期

② 字段中的Date的类型必须是java.uril.Date,如果是sql.Date时间精度设置无效

③ @Enumerated(EnumType.STRING)枚举存入数据库以String存入,EnumType.ORDINAL存入为枚举

④ 枚举Titl 类

package com.sf;

public enum Tile {

A,B,C

}  ⑤ Entity

package com.sf;

import java.util.Date;

import javax.persistence.Entity;

import javax.persistence.EnumType;

import javax.persistence.Enumerated;

import javax.persistence.GeneratedValue;

import javax.persistence.Id;

import javax.persistence.Table;

import javax.persistence.Temporal;

import javax.persistence.TemporalType;

@Entity(name="teacher")

@Table(name = "teacher", catalog = "lportal")

public class Teacher {

@Id

/*

* @GeneratedValue = native auto自动生成;

*/

@GeneratedValue

private int id;

private String name;

private String title;

/*

* @Enumerated(EnumType.STRING)自定义类型;

*/

@Enumerated(EnumType.ORDINAL)

private Tile tile;

/**

* @Temporal(value=)value可以默认不写,直接写入值;

* @Temporal(TemporalType.DATE)数据库只记录日期;

* java.sql.Date 时间精度只有日期,没有时间,下面的Date如果用这个类,时间精度设置无效;

*/

private Date birthDate;

@Temporal(TemporalType.TIME)

public Date getBirthDate() {

return birthDate;

}

public void setBirthDate(Date birthDate) {

this.birthDate = birthDate;

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getTitle() {

return title;

}

public void setTitle(String title) {

this.title = title;

}

public Tile getTile() {

return tile;

}

public void setTile(Tile tile) {

this.tile = tile;

}

public Teacher() {

}

public Teacher(int id,Date date, String name, String title,Tile tile) {

this.id = id;

this.name = name;

this.title = title;

this.tile = tile;

this.birthDate = date;

}

}


版权声明:本文为weixin_30780735原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。