DB에 접속해서 작업을 할 때, DBeaver라는 무료 프로그램을 많이 사용하게 됩니다. 이 프로그램을 사용해서 Oracle, MSSQL, PPAS에 연결하여 사용하는 법을 알아볼게요!!

 

 DBeaver 설치하는 방법

DB 관리 툴로 예전에는 Toad, Orange를 많이 사용했는데 라이선스가 필요하기 때문에 저처럼 프로젝트를 많이 옮겨 다니는 경우에는 바로 무료 툴을 받아 설치해서 사용하는 게 편하더라고요. 일단 설치부터 고고.

 

구글에 DBeaver를 검색하면 다운로드 페이지가 맨 위에 뜹니다.

Download 클릭해 들어가서 본인에게 필요한 OS 버전을 다운로드하여 설치하시면 끝입니다.

 

구글에서 DBeaver 검색하여 다운로드 받기

 

 DBeaver로 DB 접속하기

예전에는 별도의 드라이버 설치 필요 없이, DB정보만 입력하고 방화벽만 뚫려 있으면 바로 접속이 되었던 것 같은데, 최근에 여러 프로젝트에서 새로 깔아 해보려니 드라이버를 따로 설정해줘야 하더라고요.

 

물론 드라이버 다운로드하겠느냐는 페이지가 뜨는데 접속이 되지 않거나 계속 오류가 표시되는 문제가 있었습니다.

 

결론은 디비의 종류마다 맞는 odbc 라이브러리를 구해줘서 라이브러리 패스에 추가해줘야 정상적으로 연결이 됩니다.

 

 

 오라클 접속하기

처음에 커넥션을 만드는 템플릿에서 오라클을 선택합니다. IP, Port, DB SID, Username, Password 정보를 입력하고 왼쪽 하단의 Test Connection을 클릭했을 때 정상적으로 연결이 되면 성공인데요, 잘 되지 않으면 드라이버를 다시 세팅해줘야 합니다.

 

우측 하단의 Edit Driver Settings를 클릭하고 들어갑니다. Library탭으로 이동하여 기존에 있던 세팅 값을 다 지우고 "Add File"버튼을 눌러 odbc 라이브러리 파일을 추가합니다. 저의 경우 ojdbc8.jar를 넣으니 정상적으로 동작했습니다.

 

DBeaver 드라이버 세팅 변경하기

 

 

 

 

 MSSQL 연결하기

이번 프로젝트에는 디비 종류도 참 다양합니다. 보통 오라클 MSSQL 정도인데, 이번엔 Postgre계열인 PAAS 디비까지 있습니다. 써본 적도 없는 디비인데, 여하튼 일단 MSSQL 먼저 도전합니다.

 

일단 연결 템플릿에서  SQLServer를 선택합니다. 연결 정보 세팅 후 Test Connection을 눌렀지만 역시나 바로 되지 않네요. Edit Driver Settings를 클릭하여 들어갑니다.

 

아까와 동일하게 라이브러리 탭으로 이동하여 기존 정보를 지우고 sql 라이브러리를 설정해줍니다. 저는 라이브러리가 없어서 구글에서 검색해서 다운로드하였습니다. 압축파일로 되어 있는데, 압축을 풀고 보시면 자바 버전별로 라이브러리가 제공되어 있습니다. 저는 8 버전의 라이브러리를 설정했더니 연결이 문제없이 되었습니다.

 

MSSQL jdbc드라이버 다운로드

 

 PPAS 연결하기

 

PostgreSQL과 PPA의 다른 점은?!

PostgreSQL은 EnterpriseDB 사에서 제공하는 무료 데이터베이스입니다. 오픈소스이며 확장성 및 표준 준수를 강조하는 객체-관계형 데이터베이스로 최근 많이 사용되는 추세이죠.

 

피파스라고 부르는 PPAS는 Postgres Plus Advanced Server의 약자로 PostgreSQL 기반이면서 오라클의 사용법을 그대로 사용할 수 있는 장점이 있는 디비입니다. 또한 오라클 기반으로 사용하는 애플리케이션을 실행할 수 있다는 것이 큰 강점이죠.

 

따라서 오라클이 비싸기 때문에 PPAS로 마이그레이션 하여 더 저렴하게 시스템을 연동할 수 있는 매우 큰 장점을 가지고 있어서 요즘 사용들을 많이 합니다.

 

그래서 그런지 지금 프로젝트에도 PPAS가 등장했네요. 처음 연결해봅니다. 두근두근..

 

 

DBeaver에서 PPAS 연결해보기

 

포스트그레 기반이니까, 템플릿을 포스트그레로 선택했습니다. 연결 정보 입력하고.. 연결 테스트. 역시 안됩니다. 얘는 PostgreSQL의 라이브러리를 넣어 놓아도 실행이 안됩니다. PPAS용 jdbc 라이브러리를 찾아야겠죠. 구글링을 해보니 라이브러리 파일 명이 edb-jdbc18.jar라고 합니다.

 

라이브러리를 못 찾아서 프로젝트 공유서버에 edb라고 쳐서 검색했더니 나왔습니다. PPAS를 깔고 나면 그 드라이브 뒤져보면 있다고 하니 그렇게 구하시면 될 듯합니다.

 

 

아까 했던 방법과 마찬가지로 Edit Driver Settings 버튼을 눌러 라이브러리를 기존에 있던 것 지우고 edb-jdbc18.jar를 넣었습니다. 그런데.. 연결이 안 됩니다!! 흙 ㅠㅠ 알고 보니 PostgreSQL의 템플릿을 사용했기 때문에 클래스 명과 URL이 다르게 되어 있기 때문이었네요.

 

PPAS 용 클래스 명은 com.edb.Driver이며 jdbc:edb://localhost:5444/edb 이런 식으로 jdbc url도 다릅니다. 다시 드라이버 세팅으로 들어가서 Setting 탭에 클래스 이름과 URL 템플릿을 변경해주었고 연결에 성공했습니다!!

 

 

PPAS에 연결하기 위해 세팅 변경하기

 

여기까지  DBeaver를 사용해서 오라클, MSSQL, PPAS에 연결하는 방법을 알아보았습니다.

 

출처: by 모아모아뇽 2021. 7. 7.

 

저장 프로시저(stored procedure) 안에서 다른 저장 프로시저를 호출하려면 크게 보자면 2가지 방법이 있습니다.
Exec(EXECUTE)나 sp_executesql를 이용하면 됩니다.
( 참고 : MSDN - sp_executesql 사용)

 

여기서는 Exec(EXECUTE)를 이용하는 방법을 설명하겠습니다.

1. 리턴값이 없을 때

리턴값이 없으면 그냥 호출하면 됩니다.

 

--Exec [저장프로시저 이름]
--Exec [저장프로시저 이름] [매개변수1],[매개변수2],....
Exec TestSelect @temp

 

 

2. 리턴값이 있을 때

 

리턴값은 항상 int형이므로 인티저형의 변수를 하나 선언한 후 값을 대입하는 방식으로 받습니다.

 

--Exec [값을 받을 변수] = [저장프로시저 이름] [매개변수1],[매개변수2],....
Declare @nTemp int
Exec @nTemp = TestSelect @temp

 

3. 셀랙트(Select)값이 있을 때

셀랙트로 값을 받아올 때는 임시테이블이나 테이블 변수를 사용하면 됩니다.
임시테이블보다는 테이블 변수를 사용한 방법이 좋습니다.
( 참고 : [MSSQL] 저장프로시저에서 테이블(Table) 변수 사용하기 )

이런 식으로 셀랙트 값을 받을 수 있습니다.

 

--임시테이블
Declare @tableTemp table
	( sTemp varchar(32))
Insert @tableTemp exec [저장프로시저 이름] [매개변수1],[매개변수2]

 

 
 

 

[출처] : blog.danggun.net/1255

 

 

========================================

-- 1번 프로시져
CREATE PROCEDURE dbo.P_Stat (
  @IN_X_Seq  int
  ,@OP_A varchar(10) OUTPUT
  ,@OP_B int OUTPUT
)
AS
Begin

  SET @OP_A = 'test'
  SET @OP_B = 5
  RETURN
End
GO

========================================
-- 2번 프로시져. 1번을 호출
CREATE PROCEDURE dbo.P_Order (
  @IN_X_Seq  int
)
AS
Begin
 Declare  @OP_A varchar(10)
 Declare @OP_B int

 -- 프로시져를 실행해서 반환값을 반환받습니다.
 --실행하실때 output 데이터를 받을 변수를 같이 넣어주시면 됩니다.
 --그리고 담아진 변수값을 print로 찍어보시면 되구요.

 EXEC P_Stat @IN_X_Seq = @IN_X_Seq , @OP_A output, @OP_B output

 print @OP_A

 print @OP_B

End
GO

 

[출처] blog.naver.com/idtong/130071970020

-- 값에서 검색값의 시작위치를 반환

oracle : select instr('달력1,달력2,달력3', ',', 1) from dual; ----> 4를 반환

mssql : select charindex(',', '달력1,달력2,달력3') ----> 4를 반환

-- 조건 비교 후 처리시

oracle : decode(조건, true값, false값)

mssql : case when 조건 then true값 else false값 end

-- 현재일에서 1달 뒤 구하기

oracle : SELECT ADD_MONTHS(SYSDATE, 1) FROM DUAL;

mssql : SELECT DATEADD(mm, 1, GETDATE())

-- 날짜로 변환

oracle : SELECT TO_DATE('202005' || '01','YYYYMMDD' ) FROM DUAL;

mssql : SELECT CAST('202005' + '01' AS DATE)

-- 널값시 처리

oracle : NVL(END_YN, 'N')

mssql : ISNULL(END_YN, 'N')

-- 사용된 바이트 수를 반환합니다

oracle : vsize(expression)

mssql : DATALENGTH ( expression )

-- 조건문

oracle : IF 조건1 THEN 처리1 ELSIF 조건2 THEN 처리2 ELSE 처리3 END IF;

mssql : IF 조건1 처리1 ELSE IF 조건2 처리2 ELSE 처리3

-- 변수에 값 할당시

oracle : param := 0;

mssql : SET @param = 0;

-- 문자열 자르기

oracle : substr('20200520', 1, 4) --- 2020

mssql : substring('20200520', 1, 4)

oracle : substr('20200520', 0, 4) --- 2020

mssql : substring('20200520', 1, 4) -- 변환 작업시 주의해서 1로 수정해야 함

-- 절삭하기

oracle : SELECT TRUNC(150.75, 1) FROM DUAL;

mssql : SELECT ROUND(150.75, 1, 1);

-- 나머지 구하기

oracle : SELECT MOD(12,5) FROM DUAL;

mssql : SELECT 12%5

-- 두 기간의 월 수 구하기

oracle : SELECT TRUNC(MONTHS_BETWEEN(TO_DATE('2020-06-05','RRRR-MM-DD'), TO_DATE('2020-05-01','RRRR-MM-DD'))) "month" FROM DUAL;

mssql : SELECT DATEDIFF(MONTH, CAST('2020-05-01' AS DATE), CAST('2020-06-05' AS DATE))

-- 마지막 일자 구하기

oracle : select TO_CHAR(LAST_DAY(sysdate), 'DD') from dual

mssql : select DAY(DATEADD(DAY,-1,DATEADD(MONTH,1,CAST(CONVERT(CHAR(6),GETDATE(),112)+'01' AS DATE))))

-- 올림

oracle : select ceil(1.1) from dual; -- 2

mssql : select ceiling(1,1) -- 2

-- ORACLE

SELECT LEVEL_CODE,

LAG(LEVEL_CODE) OVER (ORDER BY LEVEL_CODE) UPLEVEL,

LAG(GRADE_CODE) OVER (ORDER BY LEVEL_CODE) UPGRADE

FROM HR_CODE_LEVEL

-- MSSQL

SELECT A.LEVEL_CODE, B.LEVEL_CODE UPLEVEL, B.GRADE_CODE UPGRADE

FROM

(SELECT ROW_NUMBER() OVER(ORDER BY LEVEL_CODE) ROWID, LEVEL_CODE, LEVEL_NAME, GRADE_CODE FROM HR_CODE_LEVEL) A

LEFT OUTER JOIN

(SELECT ROW_NUMBER() OVER(ORDER BY LEVEL_CODE) ROWID, LEVEL_CODE, LEVEL_NAME, GRADE_CODE FROM HR_CODE_LEVEL) B

ON

A.ROWID = B.ROWID+1

 

[출처] blog.naver.com/dbbible/221969929542

mssql  줄바꿈 치환

 

 

 REPLACE(REPLACE(CONTENT, char(13) , '' ) ,  char(10), '' ) 

 

 

 

* 줄바꿈, 탭문자 제거 방법(text 타입도 포함)

 

 

- 변경 스트링 함수

replace([컬럼명], [변경할 문자], [변경될 문자])

 

- 엔터, 탭 문자 제거 함수 활용

Tab : char(9)

Line feed: char(10)

Carriage return: char(13)

 

 

>엔터 : replace(replace([컬럼명], char(13), ''), char(10), '')

>탭 : replace([컬럼명], char(9), '')

 

 

 텍스트 타입일 경우, [replace 함수의 인수 1에 대한 인수 데이터 형식 text이(가) 잘못되었습니다.] 에러를 확인할 수 있다.

 

=> replace(convert(varchar(max), [컬럼명]), [변경할 문자], [변경될 문자])

 

TEXT 타입 컬럼명 모두 치환

replace(replace(replace(convert(varchar(max),isnull([컬럼명], '-')), char(9), ' '),char(10), ' '), char(13), '') AS [컬럼명

출처: https://ngio.co.kr/3253

로그인에서 오른쪽 마우스 선택하여 "새 로그인"을 선택한다.

새로운 로그인 계정을 추가한다. 일반 탭에서 로그인 아이디와 암호 그리고 사용할 기본 데이터베이스 설정을 해준다.


사용자 매핑 선택하면 위와 같은 화면이 나온다. 위와 같이 권한을 준다. 데이터베이스 역할 멤버 자격을 잘 못 선택할 경우 사용자 권한 설정을 하여도 모든 테이블이 보이게 된다. 기본 public으로만 셋팅하고 확인을 누른다.

로그인에 test 계정이 추가 되었고, TEST 데이터 베이스에 사용자에 test도 추가 되었다.

test 사용자에서 마우스 오른쪽을 클릭한 후 "속성"을 선택하면 위와 같은 화면이 나온다. 일반에서 설정할 필요 없고, 보안개체를 선택한 후 위에서 추가 버튼을 선택한다.


개체 추가 화면이 보이고, 특정 개체를 선택한다.


개체 유형을 선택한다.

권한을 줄 개체 유형을 선택한 후 확인 버튼을 누른다.

개체 유형 선택 후 선택할 개체 이름을 입력한 후 이름 확인을 누르면 필터가 되고, 찾아보기를 선택하면 개체 유형에 맞는 모든 정보가 보인다. table이란 이름을 입력하고 이름 확인을 선택한다.

권한을 줄 테이블을 체크한 후 확인을 준다. Table_1을 선택한 후 확인을 누른다.

위와 같이 추가 되고 확인을 누른다.

위 테이블에 SELECT 권한만 주고 확인을 누른다.

새로 생성한 계정으로 로그인 하면 추가된 테이블만 조회 가능하다.


특정 명이 들어있는 테이블, 뷰, 프로시저, 함수 등이 많은 경우 개체유형 체크가 번거롭기 때문에..


스크립트 선택하여 새쿼리 창 작업을 선택 하면 아래와 같이 구분이 생성된다.
use [TEST]
GO
GRANT SELECT ON [dbo].[TestTable] TO [test]
GO
위 구문을 복사하고,

SELECT 'GRANT SELECT ON [dbo].[' + name + '] TO [test]'
FROM sysobjects
WHERE name like '%table%'


위와 같이 셀렉트를 날리면 table이 포함된 테이블, 뷰, 프로시저, 함수이 위 구문으로 생성되고 그 문을 복사하여 일괄 명령을 날리면 손쉽게 명이 같은 개체에 권한을 부여할 수 있다.


출처 : http://yhn321.tistory.com/121



MSSQL 에서 sp_help "테이블명" 으로 하면 테이블의 정보를 확인할 수 있으나
컬럼의 Comment까지 같이 확인은 안된다.
아래는 테이블의 컬럼Comment를 확인할 수 있는 쿼리이다.
 
SELECT A.TABLE_NAME, 
		C.VALUE AS TABLE_COMMENT,
		A.COLUMN_NAME, A.DATA_TYPE, 
		ISNULL(CAST(A.CHARACTER_MAXIMUM_LENGTH AS VARCHAR),  
				CAST(A.NUMERIC_PRECISION AS VARCHAR) + ',' +
				CAST(A.NUMERIC_SCALE AS VARCHAR)) AS COLUMN_LENGTH,
		A.COLUMN_DEFAULT, A.IS_NULLABLE,
		B.VALUE AS COLUM_COMMENT
FROM INFORMATION_SCHEMA.COLUMNS A LEFT OUTER JOIN
	SYS.EXTENDED_PROPERTIES B
	ON B.major_id = object_id(A.TABLE_NAME) 
	AND A.ORDINAL_POSITION = B.minor_id
	LEFT OUTER JOIN
		(SELECT object_id(objname) AS TABLE_ID,
					VALUE
		FROM ::FN_LISTEXTENDEDPROPERTY
			(NULL, 'User','dbo','table',
				NULL, NULL, NULL)
			) C
	ON object_id(A.TABLE_NAME) = C.TABLE_ID
WHERE A.TABLE_NAME = '테이블명'
ORDER BY A.TABLE_NAME, A.ORDINAL_POSITION 
 

SELECT A.COLUMN_ID,
       A.COLUMN_NAME,
       A.DATA_TYPE,
       CASE WHEN A.DATA_TYPE = 'NUMBER' THEN A.DATA_PRECISION ||','|| A.DATA_SCALE
            WHEN A.DATA_TYPE = 'DATE' THEN '7'
            ELSE TO_CHAR(DATA_LENGTH)
       END DATA_SIZE,
       B.COMMENTS COMMENTS,
       DECODE(D.CONSTRAINT_TYPE, 'P', 'PK') AS KEY_FIELD
FROM ALL_TAB_COLUMNS A INNER JOIN ALL_COL_COMMENTS B
                       ON  A.TABLE_NAME = B.TABLE_NAME
                       AND A.OWNER = B.OWNER
                       AND A.COLUMN_NAME= B.COLUMN_NAME
                     LEFT OUTER JOIN ALL_CONS_COLUMNS C
                       ON A.TABLE_NAME = C.TABLE_NAME
                       AND A.OWNER = C.OWNER
                       AND A.COLUMN_NAME = C.COLUMN_NAME
                       AND C.POSITION IS NOT NULL
                     LEFT OUTER JOIN ALL_CONSTRAINTS D
                       ON  C.TABLE_NAME = D.TABLE_NAME
                       AND C.OWNER = D.OWNER
                       AND C.CONSTRAINT_NAME  = D.CONSTRAINT_NAME
                       AND D.CONSTRAINT_TYPE = 'P'
WHERE A.TABLE_NAME = '테이블명'
ORDER BY A.COLUMN_ID

출처 : http://blog.naver.com/PostView.nhn?blogId=2zerox&logNo=90150539116
[출처] MSSQL 테이블 정보 쿼리(Comment 포함)|작성자 수정이아빠



 SELECT sc.name +'.'+ ta.name TableName
,SUM(pa.rows) RowCnt
FROM sys.tables ta
INNER JOIN sys.partitions pa
ON pa.OBJECT_ID = ta.OBJECT_ID
INNER JOIN sys.schemas sc
ON ta.schema_id = sc.schema_id
WHERE ta.is_ms_shipped = 0 AND pa.index_id IN (1,0)
GROUP BY sc.name,ta.name
ORDER BY SUM(pa.rows) DESC


mssql 테이블 목록과 각 테이블의 데이터수 쿼리

추가)
1. 테이블 목록 가져오기
 select distinct table_name from information_schema.columns
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE 1=1
--AND TABLE_TYPE ='VIEW'
AND TABLE_TYPE ='BASE TABLE'
--AND TABLE_NAME NOT LIKE '%TEST%'
AND TABLE_SCHEMA = 'dbo'
ORDER BY TABLE_NAME 
2. 프로시져 목록 가져오기
 select distinct specific_name from INFORMATION_SCHEMA.PARAMETERS

출처:http://blog.sqlauthority.com/2010/09/08/sql-server-find-row-count-in-table-find-largest-table-in-database-part-2/


oracle
((날짜 함수))



[ SYSDATE ]
sysdate
-현재 시스템의 날짜 데이터를 반환
select to_char(sysdate, 'yyyymmddhh24mmss') from dual

[ ADD_MONTHS ]
add_months(date, integer)
-지정한 날짜에서 해당 월에 일정한 정수 (혹은 마이너스 정수)값을 더한 날짜를 반환
select to_char(add_months(sysdate, -2), 'yyy-mm-dd') from dual

[ LAST_DAY ]
last_day(date)
-해당 월의 마지막 날짜를 반환한다


[ MONTHS_BETWEEN ]
months_between(date_1, date_2)
-date1과 date2의 사이의 기간을 월로 나타내 준다.


((변환 함수))


[ TO_CHAR ]
to_char(number, "format")
-number형 데이타 타입을 문자열로 변환


[ NVL ]
nv(ex1, ex2)
-ex1값이 null이 아니라면 ex1값의, null이라면 ex2 값을 반환

SimpleDateFormat sb = new SimpleDateFormat("MM-dd-yyyy HH:mm:ss");
sql문에서 add_day = TO_DATE('"+sb.format(new Date())+"','MM-DD-YYYY HH24:MI:SS')
또는 add_day = sysdate


mssql
((날짜 함수))

[ GETDATE ]
-getdate는 현재 시간을 표시해 준다


[ DATEADD ]
-dateadd함수는 날자에 지정한 만큼을 더한다
dateadd(날짜형식, 더할 값, 날짜)


[ DATEDIFF ]
-datediff는 두날짜 사이의 날짜 형식에 지정된 부분을 돌려준다.
datediff(날짜형식, 시작날짜, 끝날짜)


[ DATENAME ]
-datename는 지정날짜의 날자형식의 이름을 돌려준다.
datename(날짜형식, 날짜)


[ DATEPART ]
-datepart는 날짜에서 지정한 날짜형식부분만 추출해줍니다.
datepart(날짜형식, 날짜) : 주일은 일요일부터 1로 시작해서 토요일날 7로 끝나게 된다


((변환 함수))

[ CONVERT ]
-문자열 형태로 변환(varchar,datetime,number)
convert(varchar, 컬럼명)


mysql
((날짜 함수))


[ NOW() ]
[ CURRENT_TIMESTAMP ]
[ CURRENT_TIMESTAMP() ]
[ LOCALTIME ]
[ LOCALTIME() ]
[ LOCALTIMESTAMP ]
[ LOCALTIMESTAMP() ]
-현재 시간을 리턴합니다


[ SYSDATE() ]
-'YYYY-MM-DD HH:MM:SS' 또는 'YYYYMMDDHHMMSS' 형식으로 현재 날짜나 시간을 리턴한다
- SYSDATE()는 실행 시점의 시간을 표시하므로 NOW()와 차이점이 있다


[ CURDATE() ]
[ CURRENT_DATE ]
[ CURRENT_DATE() ]
-'YYYY-MM-DD' 또는 'YYYYMMDD' 형식으로 현재 날짜를 리턴합니다.


[ CURTIME() ]
[ CURRENT_TIME ]
[ CURRENT_TIME() ]
-'HH:MM:SS' 또는 'HHMMSS.uuuuuu' 형식으로 현재 시간을 리턴합니다.


[ DATE_FORMAT(date,format) ]
-date로 지정된 날짜른 format에 의해 표시합니다.

기호 설명
%a Sun, ..., Sat와 같은 요일의 약어 표시
%b Jan, ..., Dec와 같은 달이름 약어 표시
%c 1 ~ 12 사이의 월 표시
%D 1st, 2nd, ... 와 같은 형식의 달의 날짜 표시
%d 00, ..., 31 형식의 달의 날짜 표시
%e 0, ..., 31 형식의 달의 날짜 표시
%f 마이크로초 표시
%H 24시간 형식의 시간 표시(00, ..., 23)
%h, %I 12시간 형식의 시간 표시(01, ..., 12 )
%i 분 표시(00, ..., 59)
%j 년의 날짜 표시(001, ..., 366)
%k 24시간 표시(0, ..., 23)
%l 12시간 표시(1, ..., 12)
%M 달 이름 표시(Jenuary, ..., December) 3
%m 달 순서 표시(00, ..., 12)
%p AM, PM 표시
%r 12시간제 표시(HH:MM:SS AM or PM)
%S, %s 초 표시(00, ..., 59)
%T 24시간제 표시(HH:MM:SS)
%U 일요일을 시작으로 년의 몇번째 주인가를 00, ..., 53으로 표시한다.
%u 월요일을 시작으로 년의 몇번째 주인가를 00, ..., 53으로 표시한다.
%V %X와 함께 쓰여 일요일을 시작으로 년의 몇번째 주인가를 01, ..., 53으로 표시한다.
%v %x와 함께 쓰여 월요일을 시작으로 년의 몇번째 주인가를 01, ..., 53으로 표시한다.
%W 요일명 표시(Sunday, ..., Saturday)
%w 요일의 순서를 표시(0=Sunday, ..., 6=Saturday)
%X %V와 함께 쓰이며 일요일을 시작하는 주를 기준으로 YYYY 형태의 년도를 표시한다.
%x %v와 함께 쓰이며 월요일을 시작하는 주를 기준으로 YYYY 형태의 년도를 표시한다.
%Y YYYY 형식으로 년도를 표시한다.
%y YY 형식으로 년도를 표시한다.
%% % 문자를 표시한다.


[ DATEDIFF(expr1,expr2) ]
-expr1과 expr2 사이의 일 수를 리턴합니다.


[ TIMEDIFF(expr1,expr2) ]
-expr1과 expr2 사이의 시간을 time 형식으로 리턴합니다.


mysql
new date();

오라클의 sysdate 와 같은?


 [출처] http://blog.naver.com/tei2434/130108256625

+ Recent posts