Date、Double等类型转化,oracle日期处理

WS_CLIENT_JAVA项目中总结

-------------------------------------------------------------------------

Double.valueOf("121").doubleValue();

Double.parseDouble("121");

Date.valueOf("1992-1-1 10:10"10");

-----------------------------------------------------------------------------------------------------------------------------------------

mysql:date 只能存年月

oracle:date 只能存年月日 时分秒,不存毫秒

             timestamp 年月日 时分秒 毫秒

java中 :【父类】java.util.Date日期格式为:年月日时分秒                     new java.util.Date()无参代表当前日期
               【子类】java.sql.Date日期格式为:年月日[只存储日期数据不存储时间数据]        new java.sql.Date(now)没有无参,必须传值
               【子类】java.sql.Time日期格式为:时分秒                                                            new java.sql.Time(now)没有无参,必须传值
               【子类】java.sql.Timestamp日期格式为:年月日时分秒纳秒(毫微秒)              new java.sql.Timestamp()没有无参,必须传值

java.lang.Object 
....|__java.util.Date 
..........|__java.sql.Date/java.sql.Timestamp /java.sql.Time 

 ---------------------------------------------------------------------------------------------------------------------------------------

 

java日期格式

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss <span style="background-color: rgb(255, 255, 102);">SSS</span>");

oracle日期格式

select to_timestamp('2012-02-03 10:29:46.453234','yyyy-mm-dd hh24:mi:ss.<span style="background-color: rgb(255, 255, 102);">ff6</span>') from dual;
PS: <span style="background-color: rgb(255, 255, 102);">ff后面的数字表示获得的毫秒位数,默认是6;一般ff3 获得三位毫秒数</span>。
select cast(sysdate as timestamp) from dual;

 

-------------------------------------------------------------------------------------------------------------------------------------------------
在使用Hibernate的原生态SQL对Oracle进行查询时,碰到查询char类型的时候始终返回的是一个字符,产生这个问题的主要原因确实是Hibernate再查询Oracle的时候,将char自动映射成character(varchar的子集)类型

select id,name,cast(state as varchar(2)) from tb
这种解决方法比较方便,只需要在查询语句指定char的返回类型。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Calendar

Calendar c = Calendar.getInstance();
		c.setTime(befor);
		
		int min = c.get(Calendar.MINUTE);
		String minStr = min>10?""+min:"0"+min;
		c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH), c.get(Calendar.HOUR_OF_DAY), Integer.parseInt(minStr), 0);


//false严格

sdf.setLenient(false);

public void testDate(){
		new java.sql.Date(new java.util.Date().getTime()); 
//		new java.util.Date(new java.sql.Date().getTime());//此处IDE报错  √
//		new java.sql.Timestamp(new java.util.Date().getTime());//此处IDE报错 ×
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		//false严格
		sdf.setLenient(false);
		String dateStr = sdf.format(new Date());
		System.out.println(dateStr);
		try {
			Date date = sdf.parse("2015-1-0");
			System.out.println(sdf.format(date));
		} catch (ParseException e) {
			e.printStackTrace();
		}
	}


虽然java.util.date精确到年月日时分秒,但是隐藏着毫秒信息,可以通过格式转换,付给TimeStamp

public void testTimeStamp(){
		try{    
			String dateString = "2010-08-20 12:00:00.125";    
			DateFormat dateFormat;   
			dateFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss.SSS",Locale.ENGLISH);//设定格式    
			dateFormat.setLenient(false);    
			java.util.Date timeDate = dateFormat.parse(dateString);//util类型    
			java.sql.Timestamp dateTime = new java.sql.Timestamp(timeDate.getTime());//Timestamp类型,timeDate.getTime()返回一个long型    
			System.out.println(dateTime);   
			
			java.util.Date datenow = new Date();
			System.out.println(datenow);
			java.sql.Timestamp datenowTime = new java.sql.Timestamp(datenow.getTime());
			System.out.println(datenowTime);
		}catch(Exception ex){    
			 ex.printStackTrace();   
		}      

	}

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

封闭性规则:(byte:8          short:16      int:32       long:64     

                         boolean:8    char:16       float:32     double:64        char是unicode编码  /u+16进制字符编码)

1、同种类型运算,得到同种类型结果

2、小于32位的运算按照int类型计算

3、字面量(自面值,直接量)的运算,在编译期间计算

(java中int字面量不超过char类型的范围可直接复制)

4、自动类型转换(运算时)

                short s1 = 12;
		byte b1 = 13;
		char c1 = 15;
		
		int i3 = s1+b1;
		byte b4 = (byte) 225;//-31

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

package test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class time {

	public static void main(String[] args){
		
		time t = new time();
//		t.test1();
//		t.test2();
//		t.test3();
//		t.test4();
//		t.testInt();
//		t.testorg();
//		t.testorg();
//		String s = t.testException();
//		System.out.println(s);
		t.testDate();
	}
	
	public String test1(){
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date now = new Date(System.currentTimeMillis());
		String nowStr = sdf.format(now);
		System.out.println("test1: "+nowStr);
		
		return nowStr;
	}
	public String test2(){
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String dateStr = "2015-03-19 13:9:15";
		Date date = new Date();
		try {
			date = sdf.parse(dateStr);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		
		Date befor = new Date(date.getTime()-((date.getTime())%(10*60*1000)));
		String beforStr = sdf.format(befor);
		System.out.println("test2: "+dateStr+ "/" +beforStr);
		
		return beforStr;
	}
	public String test3(){
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String dateStr = "2015-03-19 13:9:15";
		Date date = new Date();
		try {
			date = sdf.parse(dateStr);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		Date befor = new Date(date.getTime()-((date.getTime())%(10*60*1000)));
		
		Calendar c = Calendar.getInstance();
		c.setTime(befor);
		
		int min = c.get(Calendar.MINUTE);
		String minStr = min>10?""+min:"0"+min;
		c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH), c.get(Calendar.HOUR_OF_DAY), Integer.parseInt(minStr), 0);
		
		String tempStr = sdf.format(c.getTime());
		
		System.out.println("test3: "+dateStr+"/"+tempStr);
		return ""+tempStr;
	}
	
	public String test4(){
		Calendar c = Calendar.getInstance();
		
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH");
		String dateStr = "2015-03-19 13:9:15";
		Date date = new Date();
		try {
			date = sdf.parse(dateStr);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		c.setTime(date);
		
		int min = c.get(Calendar.MINUTE);
		min = min-min%10;
		
		String timeStr = sdf2.format(date)+":"+(min>10?""+min:"0"+min)+":00";
		System.out.println("test4: "+dateStr+"/"+timeStr);
		return timeStr;
	}
	
	public void testInt(){
		Integer i = Integer.valueOf("10").intValue();
		Integer is = Integer.parseInt("10");
		Integer is2 = Integer.parseInt("10",2);
		
		System.out.println("i: "+i+"/is: "+is+"/is2: "+is2);
	}
	
	public void testorg(){
		short s1 = 12;
		byte b1 = 13;
		char c1 = 15;
		
		int i3 = s1+b1;
		byte b4 = (byte) 225;//-31
		System.out.println("i3: "+i3+"\nb4: "+b4);
//		i3: 24
//		b4: -31
	}
	
	public String testException(){
		String s = "success";
		try {
//			int i = 1/0;
			return s;
		} catch (Exception e) {
			
		}
		return "final";
	}
	
	public void testDate(){
		new java.sql.Date(new java.util.Date().getTime()); 
//		new java.util.Date(new java.sql.Date().getTime());//此处IDE报错  √
//		new java.sql.Timestamp(new java.util.Date().getTime());//此处IDE报错 ×
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		//false严格
		sdf.setLenient(false);
		String dateStr = sdf.format(new Date());
		System.out.println(dateStr);
		try {
			Date date = sdf.parse("2015-1-0");
			System.out.println(sdf.format(date));
		} catch (ParseException e) {
			e.printStackTrace();
		}
	}
}
 
<p>public void testTimeStamp(){
  try{    
   String dateString = "2010-08-20 12:00:00.125";    
   DateFormat dateFormat;   
   dateFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss.SSS",Locale.ENGLISH);//设定格式    
   dateFormat.setLenient(false);    
   java.util.Date timeDate = dateFormat.parse(dateString);//util类型    
   java.sql.Timestamp dateTime = new java.sql.Timestamp(timeDate.getTime());//Timestamp类型,timeDate.getTime()返回一个long型    
   System.out.println(dateTime);   
   
   java.util.Date datenow = new Date();
   System.out.println(datenow);
   java.sql.Timestamp datenowTime = new java.sql.Timestamp(datenow.getTime());
   System.out.println(datenowTime);
  }catch(Exception ex){    
    ex.printStackTrace();   
  }      </p><p> }</p>


 

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值