오라클에 날짜 정보를 입력해야 될 경우가 있다. 이럴 경우 자바에서는 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 |
'코딩 > Java' 카테고리의 다른 글
자바 숫자 Format 변경 - DecimalFormat (4) | 2019.08.04 |
---|---|
자바 특정 문자 기준으로 문자열 자르기 (1) | 2016.11.25 |
자바 추상클래스(abstract class) (0) | 2016.10.23 |
자바 String 클래스 - contains, equals (0) | 2016.10.20 |
자바 String 클래스 - 공백제거 (0) | 2016.10.18 |