인포믹스(informix) 에서 현재날짜를 조건으로하여 쿼리할 일이 생겼다. 상황은 이러하다.


DB 컬럼에 글 쓴 날짜(컬럼명 : reg_dt | 속성 varchar)와 게시마감 날짜(컬럼명 : lim_dt | 속성 varchar)가 존재. 

가령 reg_dt에 2013년 6월 30일 00시 00분이 입력되고 lim_dt에 2014년 6월 30일 00시 00분이 입력되었다고 치자.

게시판 조건은 lim_dt가 현재날짜보다 과거일 경우 쿼리하지 않아야 한다는 조건이다.


그렇다면 사실 reg_dt는 신경쓰지 않아도 되며 lim_dt가 현재보다 과거인지만 체크를 하면 되는데 어떻게 해야하는지 informix는 잘 모르는 상황.

검색을 해보니 아래와 같은 방식으로 쿼리에 성공했다.


SELECT * FROM 테이블명 WHERE lim_dt >= to_char(current, "%Y%m%d%H%M%S") 


to_char(current, "%Y%m%d%H%M%S")란, 현재 시스템 시간을 포맷, YYYYMMDDHHMMSS(년월일시분초)로 가져오며, 이를 to_char 형식으로 변환하고 lim_dt와 비교를 한다는 것이다. 


내가 비교하려는 컬럼이 varchar 형식이기 때문에 to_char로 받은 듯 하다. 아직 data 형식의 컬럼과는 비교하지 않았다.


주의할 점은, 포맷변환을 할 때 %Y%m%d%H%M%S 에서와 같이 년/시/분/초 는 대문자로 쓰여지고 월/일은 소문자로 쓰여졌는데, 이거 대소문자 구분 안하면 월이 분으로 표시가 되는 불상사가 생기니 주의하시기 바란다.




블로그 이미지

김생선

세상의 모든것을 어장관리

티스토리 툴바