반응형


ORACLE(오라클)에는 날짜를 표시하는 형이 DATE 형 입니다. 


그런데, 문자열로도 날짜를 표시 합니다. 


이때 해당 날짜에서 몇일을 뺀다 든지, 몇일을 더한다든지 또는 몇시간을 빼려면 어떻게 해야할까요.


가장 좋은 방법은 DATE 형으로 바꿔서 DATE 연산을 하는 것이 최선이겠지요 ^^


그래서 사용하는 함수가 TO_DATE 입니다.


사용법은 


TO_DATE(문자열,날짜패턴) 


입니다.


여기서 문자열은 '20161010 11:11:11' 같은 문자로 된 년월일시분초 정보입니다.


날짜 패턴은


YYYY : 4자리 년도


MM : 2자리 월


DD : 2자리 일


HH24 : 24시간 단위 시간


MI : 분


SS : 초


등입니다. 


좀 더 상세 한 내용은 https://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements004.htm#i170559 URL에서 확인 하실 수 있습니다. 



실제 위의 문자열을 TO_DATE로 DATE 형으로 변환해 보면 아래와 같습니다. 


SELECT TO_DATE('20161010 11:11:11' , 'YYYYMMDD HH24:MI:SS') FROM DUAL


로 하시면 됩니다.


MySQL STR_TO_DATE 함수는 http://talkit.tistory.com/268 을 참조 하시면 됩니다.


감사합니다.




반응형
반응형

오랫만에 짧은 블로깅 하나 하겠습니다.


요즘 수집기를 개발 하고 있는데 ^^;;


그 수집기에서 블로그나 트위터 등에서 가져오면 날짜를 정리할 일이 있습니다.


Java의 Date를 사용해도 되겠지만,  ^^;;


MySQL의 Function으로도 해결 가능합니다.


그게 바로 str_to_date 입니다.


일단 제가 주로 수집 하는 애들은


Wed, 22 Jul 2015 11:26:50 +0900



자료가 위와 같이 되어 있습니다.


저것을  MySQL의 SELECT 문으로 바꾸면


SELECT str_to_date('Tue, 01 Sep 2015 10:28:18 +0900' , '%a, %d %b %Y %H:%i:%s +%x') 


%a : 요일 약어


%d 날짜


%b 월의 약어


%Y 4자리 년도


%H 24시간제 시간

%i 분

%s 초

+는 그냥 값에 있는 것입니다.

%x는 그외 입니다.(아래에 URL에 있는 것들중 없는 것입니다. 실제 값에서는 우리가나의 표준시를 나타내기 위해서 +0900을 표시하고 있습니다.)


위와 같이 하면 됩니다.


감사합니다.


그리고, 

https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format


포맷이 틀려 졌을때 위의 URL에 가시면 저 포맷에 관한 이야기가 나옵니다. 


반응형

+ Recent posts