* INIT[dbname].ora 파일 수정하기
NLS_DATE_FORMAT = 'RR-MM-DD' 이와 같이 변수와 값을 추가.
* Shell 프로그램 이용
C Shell: OS 상태에서 setenv NLS_DATE_FORMAT 'RR/MM/DD'추가.
B Shell: NLS_DATE_FORMAT='RR/MM/DD' export NLS_DATE_FORMAT 추가.
K Shell: B Shell 방법과 추가로 export NLS_DATE_FORMAT='RR/MM/DD' 로 표현 가능
* SYS.PROPS$ VIEW를 이용하여 UPDATE하는 방법
* Session 에서 set 하는 방법
SQLPLUS 상태에서 ALTER SESSION SET NLS_DATE_FORMAT='RR/MM/DD' 실행
단 SESSION 내에서만 활용가능
Java - 문자열로된 날짜 유효성 체크하기
* java.text.DateFormat.setLenient(boolean lenient)를 활용하여 체크.
lenient를 false로 설정하면 유효한 날짜가 아닐 경우 ParseException이 발생.
import java.text.SimpleDateFormat;
/**
* 문자열로 된 날짜 형식이 유효한지 체크
* @param dateStr
* @return 유효하면 true, 아니면 false
*/
public static boolean checkDateYYYYMMDD(String dateStr)
{
try {
SimpleDateFormat sdfYYYYMMDD = new SimpleDateFormat("yyyyMMdd");
sdfYYYYMMDD .setLenient(false);
sdfYYYYMMDD .parse(dateStr); //ex) dateStr="20201232"이면 ParseException 발생
return true;
} catch(ParseException e) {
return false;
} catch(Exception e) {
return false;
}
}
lenient를 false로 설정하면 유효한 날짜가 아닐 경우 ParseException이 발생.
import java.text.SimpleDateFormat;
/**
* 문자열로 된 날짜 형식이 유효한지 체크
* @param dateStr
* @return 유효하면 true, 아니면 false
*/
public static boolean checkDateYYYYMMDD(String dateStr)
{
try {
SimpleDateFormat sdfYYYYMMDD = new SimpleDateFormat("yyyyMMdd");
sdfYYYYMMDD .setLenient(false);
sdfYYYYMMDD .parse(dateStr); //ex) dateStr="20201232"이면 ParseException 발생
return true;
} catch(ParseException e) {
return false;
} catch(Exception e) {
return false;
}
}
MySql - 문자열을 날짜로 변경하기 (STR_TO_DATE)
*** 설명 ***
STR_TO_DATE 함수 사용
문자열 형식의 값을 날짜형식의 값으로 변경
DATE_FORMAT함수의 반대 기능
*** 사용예 ***
SELECT STR_TO_DATE('20161006182238', '%Y%m%d%H%i%s');
-> 2016-10-06 18:22:38
SELECT STR_TO_DATE('2016-10-06 18:22:38', '%Y-%m-%d %H:%i:%s');
-> 2016-10-06 18:22:38
SELECT STR_TO_DATE('2016/10/06 18:22:38', '%Y/%m/%d %T');
-> 2016-10-06 18:22:38
*** 사용되는 표현식 ***
표현식 설명
%M 월(Janeary, December, ...)
%W 요일(Sunday, Monday, ...)
%D 월(1st, 2dn, 3rd, ...)
%Y 연도(1987, 2000, 2013)
%y 연도(87, 00, 13)
%X 연도(1987, 2000) %V와 같이 쓰임.
%x 연도(1987, 2000) %v와 같이 쓰임.
%a 요일(Sun, Tue, ...)
%d 일(00, 01, 02, ...)
%e 일(0, 1, 2, ...)
%c 월(1, 2, ..., 12)
%b 월(Jan, Dec, ...)
%j 몇번째 일(120, 365)
%H 시(00, 01, 02, 13, 24)
%h 시(01, 02, 12)
%i 분(00, 01, 30)
%r "hh:mm:ss AM|PM"
%T "hh:mm:ss"
%S 초
%s 초
%p AM, PM
%w 요일(0, 1, 2) 0:일요일
%U 주(시작:일요일)
%u 주(시작:월요일)
%V 주(시작:일요일)
%v 주(시작:월요일)
STR_TO_DATE 함수 사용
문자열 형식의 값을 날짜형식의 값으로 변경
DATE_FORMAT함수의 반대 기능
*** 사용예 ***
SELECT STR_TO_DATE('20161006182238', '%Y%m%d%H%i%s');
-> 2016-10-06 18:22:38
SELECT STR_TO_DATE('2016-10-06 18:22:38', '%Y-%m-%d %H:%i:%s');
-> 2016-10-06 18:22:38
SELECT STR_TO_DATE('2016/10/06 18:22:38', '%Y/%m/%d %T');
-> 2016-10-06 18:22:38
*** 사용되는 표현식 ***
표현식 설명
%M 월(Janeary, December, ...)
%W 요일(Sunday, Monday, ...)
%D 월(1st, 2dn, 3rd, ...)
%Y 연도(1987, 2000, 2013)
%y 연도(87, 00, 13)
%X 연도(1987, 2000) %V와 같이 쓰임.
%x 연도(1987, 2000) %v와 같이 쓰임.
%a 요일(Sun, Tue, ...)
%d 일(00, 01, 02, ...)
%e 일(0, 1, 2, ...)
%c 월(1, 2, ..., 12)
%b 월(Jan, Dec, ...)
%j 몇번째 일(120, 365)
%H 시(00, 01, 02, 13, 24)
%h 시(01, 02, 12)
%i 분(00, 01, 30)
%r "hh:mm:ss AM|PM"
%T "hh:mm:ss"
%S 초
%s 초
%p AM, PM
%w 요일(0, 1, 2) 0:일요일
%U 주(시작:일요일)
%u 주(시작:월요일)
%V 주(시작:일요일)
%v 주(시작:월요일)
MySql - 요일 구하기
*** DAYOFWEEK ***
요일을 숫자로 반환한다.
일요일 1 ~ 토요일 7
ex) SELECT DAYOFWEEK(NOW());
=> 6
*** WEEKDAY ***
요일을 숫자로 반환한다.
월요일 0 ~ 일요일 6
ex) SELECT WEEKDAY(NOW());
=> 4
요일을 숫자로 반환한다.
일요일 1 ~ 토요일 7
ex) SELECT DAYOFWEEK(NOW());
=> 6
*** WEEKDAY ***
요일을 숫자로 반환한다.
월요일 0 ~ 일요일 6
ex) SELECT WEEKDAY(NOW());
=> 4
MySql - date_add 사용하기
*** 설명 ***
date형식에 지정된 시간을 추가한다.
*** 사용예 ***
Syntax : DATE_ADD(date, INTERVAL expr type)
SELECT NOW(), DATE_ADD(NOW(),INTERVAL 1 MONTH)
=> 2016-04-12 08:51:03, 2016-05-12 08:51:03
SELECT NOW(), DATE_ADD(NOW(),INTERVAL -1 MONTH)
=> 2016-04-12 08:51:03, 2016-03-12 08:51:03
*** type 값 ***
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
SECOND_MICROSECOND
MINUTE_MICROSECOND
MINUTE_SECOND
HOUR_MICROSECOND
HOUR_SECOND
HOUR_MINUTE
DAY_MICROSECOND
DAY_SECOND
DAY_MINUTE
DAY_HOUR
YEAR_MONTH
date형식에 지정된 시간을 추가한다.
*** 사용예 ***
Syntax : DATE_ADD(date, INTERVAL expr type)
SELECT NOW(), DATE_ADD(NOW(),INTERVAL 1 MONTH)
=> 2016-04-12 08:51:03, 2016-05-12 08:51:03
SELECT NOW(), DATE_ADD(NOW(),INTERVAL -1 MONTH)
=> 2016-04-12 08:51:03, 2016-03-12 08:51:03
*** type 값 ***
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
SECOND_MICROSECOND
MINUTE_MICROSECOND
MINUTE_SECOND
HOUR_MICROSECOND
HOUR_SECOND
HOUR_MINUTE
DAY_MICROSECOND
DAY_SECOND
DAY_MINUTE
DAY_HOUR
YEAR_MONTH
MySql - 날짜를 문자열로 변경하기(DATE_FORMAT)
*** 설명 ***
DATE_FORMAT 함수 사용
날짜형식의 값을 문자열 형식의 값으로 변경
STR_TO_DATE 함수의 반대 기능
*** 사용예 ***
SELECT DATE_FORMAT(NOW(),'%Y%m%d%H%i%s');
-> 20160401083246
SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s');
-> 2016-04-01 08:35:45
SELECT DATE_FORMAT(NOW(),'%Y/%m/%d %T');
->2016/04/01 08:36:08
*** 사용되는 표현식 ***
DATE_FORMAT 함수 사용
날짜형식의 값을 문자열 형식의 값으로 변경
STR_TO_DATE 함수의 반대 기능
*** 사용예 ***
SELECT DATE_FORMAT(NOW(),'%Y%m%d%H%i%s');
-> 20160401083246
SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s');
-> 2016-04-01 08:35:45
SELECT DATE_FORMAT(NOW(),'%Y/%m/%d %T');
->2016/04/01 08:36:08
*** 사용되는 표현식 ***
| 표현식 | 설명 |
| %M | 월(Janeary, December, ...) |
| %W | 요일(Sunday, Monday, ...) |
| %D | 월(1st, 2dn, 3rd, ...) |
| %Y | 연도(1987, 2000, 2013) |
| %y | 연도(87, 00, 13) |
| %X | 연도(1987, 2000) %V와 같이 쓰임. |
| %x | 연도(1987, 2000) %v와 같이 쓰임. |
| %a | 요일(Sun, Tue, ...) |
| %d | 일(00, 01, 02, ...) |
| %e | 일(0, 1, 2, ...) |
| %c | 월(1, 2, ..., 12) |
| %b | 월(Jan, Dec, ...) |
| %j | 몇번째 일(120, 365) |
| %H | 시(00, 01, 02, 13, 24) |
| %h | 시(01, 02, 12) |
| %i | 분(00, 01, 30) |
| %r | "hh:mm:ss AM|PM" |
| %T | "hh:mm:ss" |
| %S | 초 |
| %s | 초 |
| %p | AM, PM |
| %w | 요일(0, 1, 2) 0:일요일 |
| %U | 주(시작:일요일) |
| %u | 주(시작:월요일) |
| %V | 주(시작:일요일) |
| %v | 주(시작:월요일) |
Java - 날짜 포맷 (FastDateFormat)
*** 설명 ***
기존 SimpleDateFormat 보다 빠름.
Thread Safe.
Apache Commons Lang 라이브러리 필요.
*** 사용예 ***
FastDateFormat fdf = FastDateFormat.getInstance("yyyyMMdd");
System.out.println("FastDateFormat =" + fdf.format(Calendar.getInstance()));
*** maven repository ***
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
기존 SimpleDateFormat 보다 빠름.
Thread Safe.
Apache Commons Lang 라이브러리 필요.
*** 사용예 ***
FastDateFormat fdf = FastDateFormat.getInstance("yyyyMMdd");
System.out.println("FastDateFormat =" + fdf.format(Calendar.getInstance()));
*** maven repository ***
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
Oracle - to_date 사용
*** 사용법 ***
문자열 형식을 DATE 형식으로 변환한다.
to_date ('변환할 문자열', 'DATE 포맷')
*** 예제 ***
select to_date('2015-07-21 15:33:44', 'yyyy-mm-dd hh24:mi:ss') from dual;
=> 2015-07-21 오후 3:33:44
*** 포맷 참고 ***
yyyy : 년도. ex) 2015
yy : 년도. ex) 15
mm : 월.
dd : 일.
hh,hh12 : 시간. 12시 기준으로 표시
hh24 : 시간. 24시 기준으로 표시
mi : 분.
ss : 초.
문자열 형식을 DATE 형식으로 변환한다.
to_date ('변환할 문자열', 'DATE 포맷')
*** 예제 ***
select to_date('2015-07-21 15:33:44', 'yyyy-mm-dd hh24:mi:ss') from dual;
=> 2015-07-21 오후 3:33:44
*** 포맷 참고 ***
yyyy : 년도. ex) 2015
yy : 년도. ex) 15
mm : 월.
dd : 일.
hh,hh12 : 시간. 12시 기준으로 표시
hh24 : 시간. 24시 기준으로 표시
mi : 분.
ss : 초.
피드 구독하기:
글 (Atom)