JAVA 处理时间 - java.sql.Date、java.util.Date与数据库中的Date字段的转换方法[转]

1.如何将java.util.Date转化为java.sql.Date?
转化:
java.sql.Date sd;

java.util.Date ud;
//initialize the ud such as ud = new
java.util.Date();
sd = new java.sql.Date(ud.getTime());

2.如何将获取到的java.sql.Date转换为年-月-日输出

java.sql.Date sd;

String dateTime = sd.toString(); 
3.如果要插入到数据库并且相应的字段为Date类型

那么可以用PreparedStatement.setDate(int ,java.sql.Date)方法

其中的java.sql.Date可以用上面的方法得到
也可以用数据库提供TO_DATE函数
比如 现有 ud

TO_DATE(new SimpleDateFormat().format(ud,"yyyy-MM-dd HH:mm:ss"),

"YYYY-MM-DD HH24:MI:SS")
注意java中表示格式和数据库提供的格式的不同

一个实际的例子

sql="update tablename set timer=to_date(‘"+t+"‘,‘yyyymmddhh24miss‘) where
....."

这里的t为变量为类似:20051211131223

4.如何将"yyyy-mm-dd"格式的字符串转换为java.sql.Date

方法1

SimpleDateFormat bartDateFormat =  

        new
SimpleDateFormat("yyyy-MM-dd");  

       String dateStringToParse =
"2007-7-12";  
       try
{  
        java.util.Date date
= bartDateFormat.parse(dateStringToParse);  

        java.sql.Date sqlDate = new
java.sql.Date(date.getTime());
       
System.out.println(sqlDate.getTime());  

       }  

       catch (Exception ex) {  

       
System.out.println(ex.getMessage());  

       }

------------------------------------------------------------
方法2

       String    
strDate     =    
"2002-08-09";   
      
StringTokenizer     st    
=     new    
StringTokenizer(strDate,     "-");   

       java.sql.Date    
date     =    
new     java.sql.Date(Integer.parseInt(st.nextToken()),

               
Integer.parseInt(st.nextToken()),

                
Integer.parseInt(st.nextToken()));

java.util.Date和java.sql.Date的异同

java.sql.Date,java.sql.Time和java.sql.Timestamp三个都是java.util.Date的子类(包装类)。

但是为什么java.sql.Date类型的值插入到数据库中Date字段中会发生数据截取呢?

java.sql.Date是为了配合SQL
DATE而设置的数据类型。“规范化”的java.sql.Date只包含年月日信息,时分秒毫秒都会清零。格式类似:YYYY-MM-DD。当我们调用ResultSet的getDate()方法来获得返回值时,java程序会参照"规范"的java.sql.Date来格式化数据库中的数值。因此,如果数据库中存在的非规范化部分的信息将会被劫取。

在sun提供的ResultSet.java中这样对getDate进行注释的:
Retrieves the of the designated
column in the current row of this <code>ResultSet</code> object as a
“java.sql.Date” object in the Java programming language.

同理。如果我们把一个java.sql.Date值通过PrepareStatement的setDate方法存入数据库时,java程序会对传入的java.sql.Date规范化,非规范化的部分将会被劫取。然而,我们java.sql.Date一般由java.util.Date转换过来,如:java.sql.Date
sqlDate=new java.sql.Date(new java.util.Date().getTime()).

显然,这样转换过来的java.sql.Date往往不是一个规范的java.sql.Date.要保存java.util.Date的精确值,

我们需要利用java.sql.Timestamp.

Calendar

Calendar   calendar=Calendar.getInstance();  

//获得当前时间,声明时间变量  
int  
year=calendar.get(Calendar.YEAR);  
//得到年
int  
month=calendar.get(Calendar.MONTH);  
//得到月,但是,月份要加上1  

month=month+1;
int  
date=calendar.get(Calendar.DATE);  
//获得日期  

String   today=""+year+"-"+month+"-"+date+"";

转自:http://www.blogjava.net/yutian727/archive/2007/11/12/159888.html

JAVA 处理时间 -
java.sql.Date、java.util.Date与数据库中的Date字段的转换方法[转],布布扣,bubuko.com

JAVA 处理时间 -
java.sql.Date、java.util.Date与数据库中的Date字段的转换方法[转]

时间: 2024-12-21 08:48:58

JAVA 处理时间 - java.sql.Date、java.util.Date与数据库中的Date字段的转换方法[转]的相关文章

java中用date和数据库中的date

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date qsrq = sdf.parse("2016-03-05"); java中的属性是Date型的 数据库中是这个样子"2016-03-05 00:00:00" 拿着java属性就可以到数据库中查询日期字段了 ----这样就可以连接到数据库中,原来是这样匹配的

转 数据库中的 date datetime timestamp的区别

转 数据库中的 date datetime timestamp的区别 DATETIME, DATE和TIMESTAMP类型是相关的.本文描述他们的特征,他们是如何类似的而又不同的. DATETIME类型用在你需要同时包含日期和时间信息的值时.MySQL检索并且以'YYYY-MM-DD HH:MM:SS'格式显示DATETIME值,支持的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'.(“支持”意味着尽管更早的值可能工作,但不能保证他们可以.) DAT

SQL Server 2008 错误15023:当前数据库中已存在用户或角色

解决SQL Server 2008 错误15023:当前数据库中已存在用户或角色,SQLServer2008,错误15023,在使用SQL Server 2008时,我们经常会遇到一个情况:需要把一台服务器上的数据库转移到另外一台服务器上.而转移完成后,需要给一个"登录"关联一个"用户"时,往往会发生错误:      “错误15023:当前数据库中已存在用户或角色”        这个问题非常棘手,几经排常找到了原因与解决方法,因为这个问题与解决方法均比较复杂,所以

用SQL语句创建和删除Access数据库中的表;添加列和删除列

用SQL语句创建和删除Access数据库中的表;添加列和删除列 Posted on 2009-08-11 13:42 yunbo 阅读(1240) 评论(0) 编辑 收藏 用SQL语句创建和删除Access数据库中的表;添加列和删除列SQL语句,具体使用方法请看帮助          Create    Table    tab1    (fld1    integer)      Drop    Table    tab1          Alter    Table    tab1   

Java 读取txt文件后把数据保存到数据库中

需求:有一个很大的txt文件(1,000,000条数据),从txt中读取有用数据库后保存到Oracle数据库中 利用Java实现: 1.读取文件 2.数据库连接后插入到数据库 package com.test.IF.service; import java.io.File; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedS

Java基础系列12:使用CallableStatement接口调用数据库中的存储过程

前言:以下内容均以MySQL中的存储过程举例说明 一 存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它. 一个存储过程是一个可编程的函数,它在数据库中创建并保存.它可以有SQL语句和一些特殊的控制结构组成.当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是

java中判断从数据库中取出的字段是否为空

方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低.1:if(s == null || s.equals(""));方法二: 比较字符串长度, 效率高, 是我知道的最好一个方法.2:if(s == null || s.length() <= 0);方法三: Java SE 6.0 才开始提供的方法, 效率和方法二几乎相等, 但出于兼容性考虑, 推荐使用方法3:if(s == null || s.isEmpty());

java List&lt;Item&gt; its=new ArrayList&lt;Item&gt;(); Map按value中的某字段排序

public List<Item> getAllItem(){ Map<Long, Item> itemDic = new HashMap<Long, Item>();            List<Map.Entry<Long, Item>> entryList = new ArrayList<Map.Entry<Long, Item>>(itemDic.entrySet());              if(ent

解决SQL Server 2005数据库中datetime时间字段在前端显示时分秒的问题

SQL Server 2005中时间类型datetime的格式是"年月日时分秒",直接读出来该字段,为了不让它在前端显示"时分秒"若是显示在dataGridView中,可以修改控件的某一列格式,如: dataGridView1.Columns[10].DefaultCellStyle.Format = "yyyy-MM-dd"; 但是要在listview控件中的话,就有点困难了,貌似没有类似的属性,这样的话,考虑从数据源入手. 1.获取当前年月日