본문 바로가기

프로그램/DB

[sybase] 날짜 처리

-- date 타입 -----------------------------------

date => convert(varchar, GETDATE(),112)
datetime => GETDATE()


select str_replace( convert(varchar,getdate(),20),':',null)
: 현재 분일초,밀리세컨드까지: 152515853
 

select convert(varchar,GETDATE(),112) || str_replace( convert(varchar,getdate(),20),':',null)
: 현재 연월일시분초밀리세컨드를 다 붙여서


------------------------------------------------------------------------------------------------------

** 오늘날짜 한달전 월까지만 조회 위해 char(6) :  convert(char(6),DATEADD(MM,-1,GETDATE()),112)

SELECT SP_NO, ORG_CD, FILED_CD, GUBUN_CD, CONVERT(VARCHAR,DATE,102) DATE,CONVERT(VARCHAR,DATE2,102) DATE2, AC_PLACE, AC_CONTENT, VIOLATION, VIOLATION_CONTENT, STATUS_CD, RESULT_OUT  FROM SP_RESULT
 WHERE (ORG_CD in (select IN_ORG_CD FROM TB_NEW_ORG where PE_ORG_CD= '1541755') or ORG_CD='1541755') 
 and
(convert(char(6),DATE,112) >= convert(char(6),DATEADD(MM,-1,'2012.04.01'),112)
and  convert(char(6),DATE,112) <= convert(char(6),DATEADD(MM,-1,'2012.04.23'),112)
or convert(char(6),DATE2,112) >= convert(char(6),DATEADD(MM,-1,'2012.04.01'),112)
and  convert(char(6),DATE2,112) <= convert(char(6),DATEADD(MM,-1,'2012.04.23'),112)
)
 ORDER BY SP_NO DESC

------------------------------------------------------------------------------------------------------
  
** 오늘날짜 기준으로 하루전 : convert(varchar,DATEADD(DD,-1,GETDATE()),102)

  select * ,
  convert(varchar,DATEADD(DD,-((select SDATE from SP_SETDATE )),GETDATE()),102) AS LAST_DT
  from SP_RESULT
  WHERE
  DATE > convert(varchar,DATEADD(DD,-((select SDATE from SP_SETDATE )),GETDATE()),102)


select
   RATE_ST_DT <=  CONVERT(CHAR(8), GETDATE(), 112)
   ENTRY_TO >= CONVERT(CHAR(8), GETDATE(), 112)+'0000'
  
insert
  date ==> CONVERT(varchar, GETDATE(), 112)
  datetime ==> GETDATE()
 
 
 
  ResultSet    rs         = null;
 ArrayList    vctDataView     = null;      //리스트 데이터
 HashMap     hmDataView     = null;                       //리스트 데이터


         vctDataView     = mdao.selectQuery(sql.toString());
         hmDataView     = (HashMap)vctDataView.get(0);


----------------------------------------

datediff
dateformat
datepart
date convert
    
-------------------------------------------------------
* 날짜 처리 팁
year(), years(), month(), months(), quarter(), quarters(), dateformat() 함수를 주로 이용한다.


1. 현재의 년월(YYYYMM) : select dateformat(now (), 'yyyymm') -> 200711

2. 전월 : select dateformat(months (now (), -1), 'yyyymm') -> 200710

3. 현재 분기 : select year(now()) || quarter(now()) -> 20074

4. 전 분기 : 현재월에서 3개월전의 분기를 구한다.
   select year(months(now(), -3)) || quarter(months(now(), -3)) -> 20073

5. 현재 년도 : select year(now()) -> 2007 (integer)

6. 전 년도 : select year(months(now(), -12)) -> 2006 (integer)  (혹은 year(years(now(), -1)) 도 가능)

7. 현재 일자를 char(8)로 : select dateformat(now(), 'YYYYMMDD') -> 20071127

8. 년도코드가 'YYYY'로 되어 있는 경우 5번처럼 해서 WHERE절에 사용하면
   Integer와 Char 형이 다르므로 에러가 납니다.

   delete mytable where year_code = year(now());

   이럴 땐 숫자를 문자로 변환하려면 CAST()를 사용합니다.

   delete mytable where year_code = CAST(year(now()) as CHAR(4));

9. 말일 구하기 (Return : DATE type)

   days(months(cast((dateformat(now(*), 'YYYYMM') || '01') as date), 1) , -1)    

'프로그램 > DB' 카테고리의 다른 글

[sybase] user connection 개수 확인 방법  (0) 2012.07.31
오라클 트리거 OLD & NEW  (0) 2012.07.31
[sybase] sql 명령어  (0) 2012.05.07