java Calendar 시간과 서버시간 불일치 처리

Calendar runTimeCal = Calendar.getInstance();
System.out.println ("현재 타임존 : " + runTimeCal.getTimeZone().getDisplayName() );
TimeZone tz = TimeZone.getTimeZone("GMT+09:00");
runTimeCal.setTimeZone(tz);




위와 같이 처리하면 나온다.

윈도우 비스타에선 운영체제의 timezone을 한국으로 설정해도
Java 관련 프로그램은 계속 그리니치 표준시로 나온다.
아래 옵션을 지정해주면 정상으로 출력된다.
-Duser.timezone=Asia/Seoul

 

 

출처는 까먹음(죄송해요)..ㅠㅠ 

@echo off
java -cp lib/jtds-1.2.jar;lib/log4j-1.2.15.jar;lib/xstream-1.3.1.jar;./;%CLASSPATH% mgr.MainEngine


set root_path=d:\test
set lib_home=%root_path%/lib
set classpath=%lib_home%/xstream-1.3.1.jar;%lib_home%/jtds-1.2.jar;%lib_home%/log4j-1.2.15.jar;

java mgr.MainEngine 

-- 컬럼수 조회 

import java.sql.*;

try{
       String driver = "oracle.jdbc.driver.OracleDriver";
       String url = "jdbc:oracle:thin:@localhost:1521:ORCL";

       Class.forName(driver);
       Connection conn = DriverManager.getConnection(url, "userid", "passwd");

       String Qry=" select * from ab";

       Statement Stmt = conn.createStatement();
       ResultSet Rs = Stmt.ExecuteQuery(Qry);

 

//**** 컬럼 갯수를 알고싶을때
       ResultSetMetaData Rsmd = Rs.getMetaData();

       int ColumnCount=Rsmd.getColumnCount();

//****

 

}catch(Exception e){
       e.printStackTrace()
}


// 패키지 컴파일
C:\temp>javac my\main\TestPackge.java


// 패키지 실행
C:\temp>java my.main/TestPackge
Test Package
Test_one 

// 오라클 패키지 프로시저 선언
 

CREATE OR REPLACE PACKAGE SDK_RESULT_PKG
AS 
   TYPE REF_TYPE IS REF CURSOR;
   PROCEDURE SDK_RESULT(
           V_RESULT OUT SDK_RESULT_PKG.REF_TYPE, 
           MSG_TYPE IN VARCHAR2, 
       FROMDATE IN VARCHAR2,
       TODATE IN VARCHAR2
      );
END SDK_RESULT_PKG;

// 오라클 패키지 프로시저 구현

CREATE OR REPLACE PACKAGE BODY SDK_RESULT_PKG 
AS
   PROCEDURE SDK_RESULT(
       V_RESULT OUT SDK_RESULT_PKG.REF_TYPE, 
       MSG_TYPE IN VARCHAR2, 
       FROMDATE IN VARCHAR2,
       TODATE IN VARCHAR2
      )
   AS
       SMS_SQL VARCHAR2(5000);
       MMS_SQL VARCHAR2(5000);
       VMS_SQL VARCHAR2(5000);
       FMS_SQL VARCHAR2(5000);
       SURVEY_SQL VARCHAR2(5000);
       
     BEGIN
       SMS_SQL := 'SELECT MSG,  ';
       SMS_SQL := SMS_SQL || '     USER_ID, ';
       SMS_SQL := SMS_SQL || '     SEND_DATE, ';
       SMS_SQL := SMS_SQL || '     0 AS REPLY_TYPE, ';
       SMS_SQL := SMS_SQL || '     SUM(DEST_COUNT) AS DEST_COUNT, ';
       SMS_SQL := SMS_SQL || '     SUM(SUCC_COUNT) AS SUCC_COUNT, ';
       SMS_SQL := SMS_SQL || '     SUM(FAIL_COUNT) AS FAIL_COUNT, ';
       SMS_SQL := SMS_SQL || '     SUM((DEST_COUNT-SUCC_COUNT) FAIL_COUNT) AS ING_COUNT, ';
       SMS_SQL := SMS_SQL || '     CALLBACK, ';
       SMS_SQL := SMS_SQL || '     SUBSTR(XMLAGG(XMLELEMENT(AB,MSG_ID || ''^'') ORDER BY MSG_ID).EXTRACT(''//text()''),1) AS MSG_ID ';
       SMS_SQL := SMS_SQL || '     FROM  TBL';
       SMS_SQL := SMS_SQL || '     GROUP BY SMS_MSG, USER_ID, SEND_DATE, CALLBACK, RESERVED5';
    
    OPEN V_RESULT FOR SMS_SQL;

  END SDK_RESULT; 
END SDK_RESULT_PKG;


// 자바 실행
// 자바 실행

Connection Conn=null;
ResultSet Rs = null;
CallableStatement cstmt = null;

DBClassTEST DBClass = new DBClassTEST()

DBClass.DB_Info();
DBClass.Connect();
Conn = DBClass.Conn();

//**** DB 연결 부분은 알아서 구현 위 내용은 임시 클래스
 
Qry = "BEGIN SDK_RESULT_PKG.SDK_RESULT(?,?,?,?); END;";

cstmt = Conn.prepareCall(Qry);
cstmt.registerOutParameter(1,OracleTypes.CURSOR);
cstmt.setString(2,"SMS");
cstmt.setString(3,"200901010000");
cstmt.setString(4,"201012312359");

cstmt.execute();
Rs = ((OracleCallableStatement)cstmt).getCursor(1);

ColumnName="TEST"; //컬럼이름

while(Rs.next()){
 System.out.println(Rs.getString(ColumnName));
}
Rs.close();
cstmt.close();
Conn.close();
DBClass.DB_Close();


+ Recent posts