java.util.Date和java.sql.Date相互转换问题

供稿:hz-xin.com     日期:2024-05-05
java.util.Date和java.sql.Date的区别和相互转化

java.util.Date是在除了SQL语句的情况下面使用的。
java.sql.Date是针对SQL语句使用的,它只包含日期而没有时间部分

们都有getTime方法返回毫秒数,自然就可以直接构建。 java.util.Date 是 java.sql.Date
的父类,前者是常用的表示时间的类,我们通常格式化或者得到当前时间都是用他,后者之后在读写数据库的时候用他,因为PreparedStament的
setDate()的第2参数和ResultSet的getDate()方法的第2个参数都是java.sql.Date。
java.sql.Date转为java.util.Date
java.sql.Date date=new java.sql.Date();
java.util.Date d=new java.util.Date (date.getTime());

java.util.Date转为java.sql.Date
java.util.Date utilDate=new Date();
java.sql.Date sqlDate=new java.sql.Date(utilDate.getTime());
java.util.Date utilDate=new Date();
java.sql.Date sqlDate=new java.sql.Date(utilDate.getTime());
java.sql.Time sTime=new java.sql.Time(utilDate.getTime());
java.sql.Timestamp stp=new java.sql.Timestamp(utilDate.getTime());

这里所有时间日期都可以被SimpleDateFormat格式化format()
SimpleDateFormat f=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
f.format(stp);
f.format(sTime);
f.format(sqlDate);
f.format(utilDate)
java.sql.Date sqlDate=java.sql.Date.valueOf(" 2005-12-12");
utilDate=new java.util.Date(sqlDate.getTime());

另类取得年月日的方法:
import java.text.SimpleDateFormat;
import java.util.*;
java.util.Date date = new java.util.Date();
//如果希望得到YYYYMMDD的格式SimpleDateFormat
sy1=new SimpleDateFormat("yyyyMMDD");
String dateFormat=sy1.format(date);
//如果希望分开得到年,月,日SimpleDateFormat
sy=new SimpleDateFormat("yyyy");
SimpleDateFormat sm=new SimpleDateFormat("MM");
SimpleDateFormat sd=new SimpleDateFormat("dd");
String syear=sy.format(date);
String smon=sm.format(date);
String sday=sd.format(date);

共同点:都有getTime方法返回毫秒数,可以直接构建
不同点:
1、java.sql.Date是针对SQL语句使用的,它只包含日期而没有时间部分,一般在读写数据库的时候用,PreparedStament的setDate()的参数和ResultSet的getDate()方法的都是java.sql.Date
2、java.util.Date是在除了SQL语句的情况下面使用,一般是日常日期字段
3、java.util.Date 是 java.sql.Date 的父类,即:继承关系:java.lang.Object --》 java.util.Date --》 java.sql.Date
相互转化:
java.sql.Date转为java.util.Date
java.sql.Date date=new java.sql.Date();
java.util.Date d=new java.util.Date (date.getTime());
java.util.Date转为java.sql.Date
java.util.Date utilDate=new Date();
java.sql.Date sqlDate=new java.sql.Date(utilDate.getTime());
java.util.Date utilDate=new Date();
java.sql.Date sqlDate=new java.sql.Date(utilDate.getTime());
java.sql.Time sTime=new java.sql.Time(utilDate.getTime());
java.sql.Timestamp stp=new java.sql.Timestamp(utilDate.getTime());
这里所有时间日期都可以被SimpleDateFormat格式化format()
SimpleDateFormat f=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
f.format(stp);
f.format(sTime);
f.format(sqlDate);
f.format(utilDate)
java.sql.Date sqlDate=java.sql.Date.valueOf(" 2005-12-12");
utilDate=new java.util.Date(sqlDate.getTime());
另类取得年月日的方法:
import java.text.SimpleDateFormat;
import java.util.*;
java.util.Date date = new java.util.Date();
如果希望得到YYYYMMDD的格式SimpleDateFormat
sy1=new SimpleDateFormat("yyyyMMDD");
String dateFormat=sy1.format(date);
如果希望分开得到年,月,日SimpleDateFormat
sy=new SimpleDateFormat("yyyy");
SimpleDateFormat sm=new SimpleDateFormat("MM");
SimpleDateFormat sd=new SimpleDateFormat("dd");
String syear=sy.format(date);
String smon=sm.format(date);
String sday=sd.format(date);

date.getHours()的方法已经过时,编译器会发出警告,不建议这么做。
java.sql.Date没有直接显示hh:mm:ss的方法(除过时方法);
有一种比较麻烦的方法可以实现你的要求。

java.sql.Date b = new java.sql.Date(new java.util.Date().getTime());
java.util.Date c = new java.util.Date(b.getTime());
System.out.println(b+" "+c.toString().split(" ")[3]);
希望对你有帮助

Java里面所有的时间都是按毫秒算的

都有个getTime()得到从以下那个时间到现在的毫秒数
在中国都是从1970/01/01 08:00:00.000开始算

你说的格式输出的话可以用DateFormat

DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String date = format.format(new java.util.Date());

System.out.println(date);

不要.getTime()吧,可以直接通过类型转换或者直接创建java.sql.Date对象,楼主试一下。
一楼的方法不推荐使用

你使用什么往数据库中插值呢
jdbc还是hibernate

jdbc的话你的sql语句中插入datetime 的格式就因该是yyyy-MM-dd hh:mm:ss。
你还得不ava.sql.Date用SimpleDateFormat转成yyyy-MM-dd hh:mm:ss格式的string再付给sql的datetime字段。

hibernate的话直接set po类就是最精确地时间了

Date date=new Date();
int tt=date.getHours();
其他的类似

修改,上面的这种做法不推荐使用
package test;

import java.util.*;

public class Tst {

public static void main(String[] args) {
GregorianCalendar gc=new GregorianCalendar();
String now=gc.get(Calendar.YEAR)+"-"+(gc.get(Calendar.MONTH)+1)+"-"+gc.get(Calendar.DATE)+" "
+gc.get(Calendar.HOUR)+":"+gc.get(Calendar.MINUTE)+":"+gc.get(Calendar.SECOND);
System.out.println(now);

}

}
建议楼主采用拼写字符串的形式,就是向数据库插入一条字符串。

java.util.Date和java.sql.Date的区别和相互转化
答:ava.sql.Date是针对SQL语句使用的,它只包含日期而没有时间部分 它们都有getTime方法返回毫秒数,自然就可以直接构 建。 java.util.Date 是 java.sql.Date 的父类,前者是常用的表示时间的类,我们通常格式化或者得到当前...

java.util.Date和java.sql.Date相互转换问题
答:java.sql.Date b = new java.sql.Date(new java.util.Date().getTime());java.util.Date c = new java.util.Date(b.getTime());System.out.println(b+" "+c.toString().split(" ")[3]);希望对你有帮...

java语言如何进行date日期的运算或者如何判断日期有没有超过今天_百度...
答:java.util.Date ctime = new java.util.Date(); String rTime = ""; java.text.SimpleDateFormat cf = new java.text.SimpleDateFormat("yyyyMMdd"); rTime = cf.format(ctime); int time1 = Integer.PaseInt(...

如何在Java 8中愉快地处理日期和时间
答:ava 8新增了LocalDate和LocalTime接口,为什么要搞一套全新的处理日期和时间的API?因为旧的java.util.Date实在是太难用了。java.util.Date月份从0开始,一月是0,十二月是11,变态吧!java.time.LocalDate月份和星期都改...

avaScript中用什么方法获取和设置Date对象中的信息?
答:通常我们在声明Date对象的时候就能设置Date对象中的日期和时间。如 //表示1999年6月11日0时0分0秒 var someDay = new Date(1999, 6, 11, 0, 0, 0);在程序中为了获取对象的方法,我们通常有一系列的get方法:与...

java的常用接口有哪些?
答:5.ava.util.HashMap 一个实现键值对数据结构的类,这个类实现了Map接口,类似比较ArrayList与Vector,HashMap与Hashtable也是经常拿来比较的。它也是一个受欢迎的集合类,作为一个属性-值的容器,经常用在应用程序多个层之间...

ava中怎样让一个JFrame窗体始终在最前端显示并且无法操作其他窗体_百度...
答:主窗口---显示另一个窗口时,主窗口的enable设置成false

java学习作为一名java初学者,如何快速学习j
答:JAVA快速入门的方法:1、时刻提醒自己Java是一种OOP语言工具,而不仅仅是编码,只有这样才能总体把握和运用Java。2、在学习的过程中,最好能够【了解Java】的底层机制,而不是仅仅停留在表层,不是抄书上的例子运行出结果就...

高分java连接SQL server 2000 详细步骤
答:t_by=date&sort=desc 2、Ant包下载地址: http://archive.apache.org/dist/ant/ 3、JDBC Driver要根据你用的database来定,一般database官方网站上都会有。Hibernate支持常用的database,比如 MySQL, Oracle, PostgreSQL, 和MS-SQL ...

java输入输出流问题
答:import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.FileReader;import java.io.IOException;public class Point { public static void main(String[] args) { Point p = new Point(...