`
qhd_liwei
  • 浏览: 102580 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java.sql.Date和java.sql.Timestamp转换

    博客分类:
  • java
阅读更多
Timestamp有两个构造方法:

new Timestmap(Long),就是上面java.sql.Timestamp now = new java.sql.Timestamp((new java.util.Date()).getTime());的方法,((new java.util.Date()).getTime()返回的是个Long

还有new Timestamp(int year,int month,int date,int hour,int minute,int second,int millisecond),印象中生成是int year = 当前年 - 1400,int month = 当前月 - 1
不过这个构造方法不是不推荐的

EJB里DATE型的字段用setTimestamp(column,Timestamp)来设。

在开发web应用中,针对不同的数据库日期类型,我们需要在我们的程序中对日期类型做各种不同的转换。若对应数据库数据是oracle的Date类型,即只需要年月日的,可以选择使用java.sql.Date类型,若对应的是MSsqlserver数据库的DateTime类型,即需要年月日时分秒的,选择java.sql.Timestamp类型
你可以使用dateFormat定义时间日期的格式,转一个字符串即可

package personal.jessica;
import java.util.Date;
import java.util.Calendar;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Locale;
class Datetest{
/**
*method 将字符串类型的日期转换为一个timestamp(时间戳记java.sql.Timestamp)
*@param dateString 需要转换为timestamp的字符串
*@return dataTime timestamp
*/
public final static java.sql.Timestamp string2Time(String dateString)
   throws java.text.ParseException {
   DateFormat dateFormat;
   dateFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss.SSS", Locale.ENGLISH);//设定格式
   //dateFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss", Locale.ENGLISH);
   dateFormat.setLenient(false);
//我做这块的时候下边的不对,后来我把dateFormat后边加上了.getDateInstance()就好了
   //java.util.Date timeDate = dateFormat.parse(dateString);//util类型

   java.util.Date ywybirt = dateFormat.getDateInstance().parse(ywyBirthday);//util类型
java.sql.Timestamp dateTime = new java.sql.Timestamp(timeDate.getTime());//Timestamp类型,timeDate.getTime()返回一个long型
   return dateTime;
}
/**
*method 将字符串类型的日期转换为一个Date(java.sql.Date)
*@param dateString 需要转换为Date的字符串
*@return dataTime Date
*/
public final static java.sql.Date string2Date(String dateString)
   throws java.lang.Exception {
   DateFormat dateFormat;
   dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
   dateFormat.setLenient(false);
   java.util.Date timeDate = dateFormat.parse(dateString);//util类型
   java.sql.Date dateTime = new java.sql.Date(timeDate.getTime());//sql类型
   return dateTime;
}

public static void main(String[] args){
   Date da = new Date();
   //注意:这个地方da.getTime()得到的是一个long型的值
   System.out.println(da.getTime());
 
   //由日期date转换为timestamp
 
   //第一种方法:使用new Timestamp(long)
   Timestamp t = new Timestamp(new Date().getTime());
   System.out.println(t);

   //第二种方法:使用Timestamp(int year,int month,int date,int hour,int minute,int second,int nano)
   Timestamp tt = new Timestamp(Calendar.getInstance().get(
       Calendar.YEAR) - 1900, Calendar.getInstance().get(
       Calendar.MONTH), Calendar.getInstance().get(
       Calendar.DATE), Calendar.getInstance().get(
       Calendar.HOUR), Calendar.getInstance().get(
       Calendar.MINUTE), Calendar.getInstance().get(
       Calendar.SECOND), 0);
   System.out.println(tt);

   try {
    String sToDate = "2005-8-18";//用于转换成java.sql.Date的字符串
       String sToTimestamp = "2005-8-18 14:21:12.123";//用于转换成java.sql.Timestamp的字符串
      Date date1 = string2Date(sToDate);
      Timestamp date2 = string2Time(sToTimestamp);
    System.out.println("Date:"+date1.toString());//结果显示
    System.out.println("Timestamp:"+date2.toString());//结果显示
   }catch(Exception e) {
    e.printStackTrace();
   }
}
}

怎样处理一个时间段,比如某人登陆了xx天xx小时xx分xx秒

这个问题可以如下处理:
首先你肯定可以从数据库中读取这个用户第一次登陆的具体时间:
不妨为2002-01-01 12:00:00
同样他到目前为止最后登陆的具体时间:
不妨为2002-09-08 13:14:15
若取得是数据本来就是时间类型的,则不用转化,若是String的则可以在转化后处理。
你可以利用类似上面的例子,取得这两个时间对应的Timestamp值dateTime
然后使用dateTime.getTime()方法得到这两个时间的long值,进行相减(大的减小的,即按时间后减先),得到一个long值,它是用毫秒milliseconds计算的,你将它换算一下就知道多少天多少小时多少分多少秒了
比如首先除于(java中/除)一天的毫秒数,得到天,然后用余下的值除于一小时的毫秒数,得到小时……最后就可以得到所有的需求了
分享到:
评论
1 楼 hellostory 2011-01-19  
又是抄袭的

相关推荐

    Java.util.date与java.sql.date区别和转换

    类型转换 ( Java.util.date与java.sql.date区别和转换

    项目源码-java图书馆管理系统

    import java.sql.Date; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Timestamp; import java.util.ArrayList; import java.util.List; import ...

    DateUtil.java

    基于Java 日期转换类: 支持如下(以下的方法格式都可以自定义): 将java.util.Date类型格式化成字符串显示...将字符串转换成java.sql.Date类型 将字符串转换成Timestamp类型 比较两个时间的时间差,返回格式为x天x时x分x秒

    xfire测试项目(包括复杂数据类型)

    public java.sql.Timestamp getTimestamp(java.sql.Timestamp a); public java.sql.Date getSDate(java.sql.Date a); public java.sql.Time getTime(java.sql.Time a); /*自定义类型*/ public UserBean getUser...

    java四种时间的区别和联系

    java.util.Date, java.util.Calendar, java.sql.Date, java.sql.Time, java.sql.Timestamp区别和联系

    mysql时间类型对应的java类型1

    Mysql 与 java 的时间类型 MySql的时间类型有 Java中与之对应的时间类型 datejava.sql.Date Datetimejava.sql

    Java对象序列化和反序列化工具Xson.zip

    24.java.sql.Timestamp 25.InetAddress 26.Inet4Address 27.Inet6Address 28.InetSocketAddress 1.使用xson进行对象到字节数组的序列化 User user = new User(); //set.... byte[] data = XSON.write...

    mysql 日期函数.txt

    1. 2.DAYOFWEEK(date) 3.WEEKDAY(date) 4.DAYOFMONTH(date) ...UNIX_TIMESTAMP(date) 26.FROM_UNIXTIME(unix_timestamp) FROM_UNIXTIME(unix_timestamp,format) 27.SEC_TO_TIME(seconds) 28.TIME_TO_SEC(time)

    Date4long2String

    日期转换,long类型时间转换成string类型

    java到MySQL的日期操作

    将java中的Date类型存放进MySql数据库需要用到java.sql.Timestamp包,

    sql访问数据库工具类--SqlUtils(java源码)

    || object.getClass().equals(Timestamp.class)) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); return "to_date('" + sdf.format(object) + "','yyyy-mm-dd hh24:mi:ss')...

    spring AOP

    import java.sql.Timestamp; import java.util.Date; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io...

    解析MySql与Java的时间类型

    MySql的时间类型有 Java中与之对应的时间类型date java.sql.DateDatetime java.sql.TimestampTimestamp java.sql.TimestampTime java.sql.TimeYear 

    java源代码公司管理系统

    import java.sql.Timestamp; import java.util.ArrayList; import java.util.List; import com.wsy.model.Back; import com.wsy.model.BookInfo; import com.wsy.model.BookType; import com.wsy.model.Borrow; ...

    java时间处理工具类--DateUtils

    * @(#)DateUtil.java * * * @author kidd * @version 1.00 2007/8/8 */ import java.util.*; import java.text.*; import java.sql.Timestamp; public class DateUtils { /** * 时间范围:年 */ ...

    DtSQL通用数据库管理工具

    4. SQL工具: 编辑,格式化和执行SQL语句 5. SQL生成工具:帮助生成查询,插入,更新,删除SQL语句 6. 数据导入:提供强大的数据导入功能. 能够从不同的数据文件导入数据: CSV files, Excel files, and fixed-width files...

    Oracle date 和 timestamp 区别详解

    Oracle date 和 timestamp 区别详解 1.DATE数据类型  这个数据类型我们实在是太熟悉了,当我们需要表示日期和时间的话都会想到date类型。它可以存储月,年,日,世纪,时,分和秒。它典型地用来表示什么时候事情...

    JAVA时间处理类

    import java.sql.Timestamp; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import org.apache....

    Hibernate注释大全收藏

    @TemporalType.(DATE,TIME,TIMESTAMP) 分别Map java.sql.(Date, Time, Timestamp). @Lob 注解属性将被持久化为 Blog 或 Clob 类型。具体的java.sql.Clob, Character[], char[] 和 java.lang.String 将被持久化为 ...

    Oracle jdbc for 11g 最新版 驱动 ojdbc6.jar

     包括ARRAY, BFILE, DATE, INTERVALDS, NUMBER, STRUCT, TIME,TIMESTAMP,TIMESTAMP等。  ojdbc5.jar: 适用于jdk5  ojdbc6.jar: 适用于jdk6  ***_g.jar 只是用javac -g编译,生成所有调试信息,其它全一样  ...

Global site tag (gtag.js) - Google Analytics