본문으로 바로가기

String 타입을 Date 타입으로 변환

category 코딩/Java 2016. 11. 22. 16:13







오라클에 날짜 정보를 입력해야 될 경우가 있다. 이럴 경우 자바에서는 String 타입이 아닌 Date 타입으로 값을 넘겨야 오라클에 적용이 된다. String 로 날짜가 표시되어 있다면 반드시 Date로 변경해줘야 한다.



■ 주의 - 자바의 Date 클래스는 2가지가 있다.

  • java.util.Date : 오라클의 날짜타입과 연동 불가

  • java.sql.Date : 오라클의 날짜타입과 연동 가능




소스 코드



java.sql.Date의 valueOf(String s) 메서드는 입력받 문자열 값을 가지고 날짜(Date)로 변경해 준다. 이 때 주의할 것은 날짜형식이 yyyy-mm-dd로 되어야 한다. valueOf("20101122") 이렇게 yyyymmdd 로 입력할 경우 IllegalArgumentException이 발생한다.



Date  java.sql.Date.valueOf(String s)


Converts a string in JDBC date escape format to a Date value.


Parameters:

s a String object representing a date in in the format "yyyy-[m]m-[d]d". The leading zero for mm and dd 

        may also be omitted.

Returns:

a java.sql.Date object representing the given date

Throws:

IllegalArgumentException - if the date given is not in the JDBC date escape format (yyyy-[m]m-[d]d)



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import java.sql.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
 
// String -> java.sql.Date로 변경
public class StringToDate 
{
    public static void main(String[] args)
    {
        StringToDate st = new StringToDate();
 
        System.out.println(st.transformDate("2016""11""22"));
        System.out.println(st.transformDate("20161101"));
    }
    
    // 년, 월, 일이 각각 입력되었을 경우 Date로 변경하는 메서드
    public Date transformDate(String year, String month, String day)
    {
        String date = year+"-"+month+"-"+day;
        Date d = Date.valueOf(date);
        
        return d;
    }
    
    // 날짜가 yyyymmdd 형식으로 입력되었을 경우 Date로 변경하는 메서드
    public Date transformDate(String date)
    {
        SimpleDateFormat beforeFormat = new SimpleDateFormat("yyyymmdd");
        
        // Date로 변경하기 위해서는 날짜 형식을 yyyy-mm-dd로 변경해야 한다.
        SimpleDateFormat afterFormat = new SimpleDateFormat("yyyy-mm-dd");
        
        java.util.Date tempDate = null;
        
        try {
            // 현재 yyyymmdd로된 날짜 형식으로 java.util.Date객체를 만든다.
            tempDate = beforeFormat.parse(date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        
        // java.util.Date를 yyyy-mm-dd 형식으로 변경하여 String로 반환한다.
        String transDate = afterFormat.format(tempDate);
        
        // 반환된 String 값을 Date로 변경한다.
        Date d = Date.valueOf(transDate);
        
        return d;
    }
}
 
 
/****실행결과*****
*
*  2016-11-22
*  2016-11-01
*
*/
cs




참고



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
■ String → java.sql.Date 변환
 
String  day = "2016-11-22"// 형식을 지켜야 함
java.sql.Date d = java.sql.Date.valueOf(day);
 
 
■ String → java.sql.Timestamp 변환
 
String day = "2016-11-22 11:22:30.0"// 형식을 지켜야 함
java.sql.Timestamp t = java.sql.Timestamp.valueOf(day);
 
 
■ String → java.util.Date 변환
 
String  day = "20161122"// SimpleDateFormat 생성자에 전달되는 형식과 일치해야 함
java.util.Date d = new java.text.SimpleDateFormat("yyyyMMdd").parse(day);
 
 
■ java.util.Date → java.sql.Date 변환
 
java.util.Date u = new java.util.Date();
java.sql.Date s = new java.sql.Date(u.getTime());
cs





RSS구독 링크추가 트위터 이메일 구독