PROCEDURE와 FUNCTION의 차이점



- 프로시저는 매개변수로 데이터를 전달받을 수도 있고, 빋지 않을 수도 있다.

  실행 후 프로시저는 호출한 프로그램에게 값을 반환할 수도 있고, 안 할 수도 있다.


- 함수도 매개변수로 데이터를 전달받을 수도 있고, 빋지 않을 수도 있다.

  그러나 함수는 프로시저와 다르게 실행 후 반드시 하나의 값을 반환(RETURN)한다.


- 생성방법과 호출방법이 다르다.



 

1. Stored PROCEDURE(프로시저)


 

- 생성방법



CREATE [OR REPLACE] PROCEDURE 프로시저명(매개변수1, ...) IS [지역변수선언; ]


BEGIN

   처리명령문;

   ......;


[EXCEPTION]

  [ 처리명령문;]

  [......;]


END [프로시저명];



- 호출방법 : SQL*PLUS 커맨드창에서 SQL>EXECUTE 프로시저명(매개변수1,...)




2. Function(함수)



- 생성방법



CREATE [OR REPLACE] Function 함수명(매개변수1, ...)

RETURN 데이터타입

IS [지역변수선언; ]


BEGIN

   처리명령문;

   ......;

   RETURN 변수명;


[EXCEPTION]

  [ 처리명령문;]

  [......;]


END [함수명];



- 호출방법 : SQL내장함수와 동일. SELECT문 내에서 사용하면 된다.

                 예를 들어, 함수명이 CONVERT라면,

                 SELECT CONVERT(매개변수1,...) FROM TABLE명

Posted by 나비:D
:

1. 숫자함수

ABS(n) : ABS함수는 절대값을 계산하는 함수입니다. 
CEIL(n) : CEIL함수는 주어진 값보다는 크지만 가장 근접하는 최소값을 구하는 함수입니다.
EXP(n) : EXP함수는 주어진 값의 e의 승수를 나타냅니다.  e는 2.171828183..입니다.
FLOOR(n) : FLOOR함수는 주어진 값보다 작거나 같은 최대 정수값을 구하는 함수입니다. (CEIL 함수와 비교해 보세요. )

LN(n) : LN함수는 주어진 값의 자연로그 값을 반환합니다.
MOD(m, n) : MOD함수는 m을 n으로 나누어 남은 값을 반환한다. n이 0일 경우 m을 반환합니다.
POWER(m, n) : POWER함수는 m의 n승 값을 계산합니다.
ROUND(n, [m]) : ROUND함수는 n값의 반올림을 하는 함수로 m은 소숫점 아래 자릿수를 나타낸다.

SIGN(n) : SIGN함수는 n<0일 경우 -1DFM N=0일 경우 0을 N>0일 경우 1을 반환합니다.
SQRT(n) : SQRT함수는 n값의 루트값을 계산한다. n은 양수여야 합니다.
TRUNC(n, m) : TRUNC함수는 n값을 m 소숫점 자리로 반내림한 값을 반환합니다. (ROUND 함수와 비교해 보세요.)


 

2. 문자열 처리함수

CONCAT(char1, char2) : CONCAT 함수는 Concatenation의 약자로 두 문자를 결합하는 역할을 합니다. "||" 연산자와 같은 역할을 합니다.
INITCAP(char) : 주어진 문자열의 첫 번째 문자를 대문자로 변환시켜 줍니다.
LOWER(char) : 문자열을 소문자로 변환 시켜 줍니다.
UPPER(char) : 문자열을 대문자로 변환 시켜 줍니다.
LPAD(char1, n [,char2]) :왼쪽에 문자열을 끼어 놓는 역할을 합니다. n은 반환되는 문자열의 전체 길이를 나타내며, char1의 문자열이 n보다 클 경우 char1을 n개 문자열 만큼 반환합니다.
RPAD(char1, n [,char2]) : LPAD와 반대로 오른쪽에 문자열을 끼어 놓는 역할을 합니다.

SUBSTR(char, m ,[n]) : SUBSTR함수를 이용하여 m 번째 자리부터 길이가 n개인 문자열을 반환한 합니다. m이 음수일 경우에는 뒤에서 M번째 문자부터 반대 방향으로 n개의 문자를 반환합니다.
LENGTH(char1) : 문자열의 길이를 리턴 합니다.
REPLACE(char1, str1, str2) : REPLACE는 문자열의 특정 문자를 다른 문자로 변환 합니다.

INSTR : 문자열이 포함되어 있는지를 조사하여 문자열의 위치를 반환합니다. 지정한 문자열이 발견되지 않으면 0이 반환 됩니다.
TRIM : 특정한 문자를 제거 합니다. 제거할 문자를 입력하지 않으면 기본적으로 공백이 제거 됩니다.  리턴값의 데이터타입은 VARCHAR2 입니다.
 
 -- 두개의 문자를 연결한다.
SQL>SELECT CONCAT('Oracle', ' Korea') NAME FROM dual;

-- 문자좌측에 *를 붙인다. 문자 길이는 10개로 제한
SQL>SELECT LPAD('JUNG-SICK', 10, '*') NAME FROM dual;

-- 문자우측에 *를 붙인다. 문자 길이는 11개로 제한
SQL>SELECT RPAD('JUNG-SICK', 11, '*') NAME FROM dual;

-- 앞에서부터, 뒤에서부터 예제...
SQL>SELECT SUBSTR('JUNG-SICK', 3, 3) NAME FROM dual;
SQL>SELECT SUBSTR('JUNG-SICK', -3, 3) NAME FROM dual;

-- 문자의 길이를 구함
SQL>SELECT LENGTH('JUNG-SICK') TEST FROM dual;

-- 대소문자 구별합니닷!!
SQL>SELECT REPLACE('JACK and JUE','J','BL') "Changes" FROM dual;
SQL>SELECT REPLACE('JACK and JUE','j','BL') "Changes" FROM dual;

-- 지정한 문자 OK가 발견되지 않아서 0이 반환 됩니다.
SQL>SELECT INSTR('CORPORATE FLOOR','OK')  "Instring" FROM dual;

-- OR이 있는 위치 2를 반환 합니다. 왼쪽부터 비교를 한다는 것을 알 수 있습니다.
SQL>SELECT INSTR('CORPORATE FLOOR','OR')  "Instring" FROM dual;

-- 0을 제거 합니다.
SQL>SELECT TRIM(0 FROM 0009872348900)  "TRIM Example" FROM dual;

-- 어떤 문자도 입력하지 않으면 기본적으로 공백이 제거 됩니다. 
-- TRIM을 사용한 위에 예제와 사용하지 않은 아래 예제의 결과 값이 다르게 나오는 것을 알 수 있습니다.
-- NVL(a,b) 함수는 a가 NULL일 경우 b로 바꿔주는 함수입니다.
SQL>SELECT NVL(TRIM ('  '),'공백')  "TRIM Example"  FROM dual;
 


3. 날짜 처리함수

LAST_DAY(d) : LAST_DAY함수는 달의 마지막 날의 날짜를 반환합니다.
ADD_MONTHS(a, b) : ADD_MONTHS 함수는 a의 날짜에 b의 달을 더한 값을 반환 합니다.
MONTH_BETWEEN(a1, a2) : MONTH_BETWEEN은 a1과 a2 사이의 달의 수를 NUMBER형 타입으로 반환 합니다.
ROUND(d[,F]) : ROUND 함수는 F에 지정된 단위로 반올림 합니다. F가 연도라면 연도 단위로 반올림 합니다.

 -- 오늘과 이달의 마지막날 반환
SQL>SELECT SYSDATE TODAY, LAST_DAY(SYSDATE) LASTDAY FROM dual;

-- 오늘에서 3개월을 더한 후, RRRR/MM/DD 형식으로 반환
SQL>SELECT TO_CAHR(ADD_MONTHS(SYSDATE,3),'YYYY/MM/DD') "date" FROM dual;

-- 두 날짜 사이의 개월수를 반환
SQL>SELECT MONTHS_BETWEEN(TO_DATE('2000/06/05') , TO_DATE('2000/09/23')) "Date" FROM dual;

-- '1998/09/11' 의 년도인 1998을 반환
SQL>SELECT ROUND(TO_DATE('1998/09/11'), 'YEAR') FROM dual;
 


4. 변환함수

TO_CHAR : TO_CHAR함수는 DATE형, NUMBER형을 VARCHAR2형으로 바꿔줍니다.
TO_DATE : TO_DATE함수는 CHAR, VARCHAR2형을 DATE 타입으로 변환합니다.
TO_NUMBER : TO_NUMBER함수는 CHAR, VARCHAR2의 데이터 타입을 숫자형식으로 변환합니다.
 
-- 오늘의 월만 반환
SQL>SELECT TO_CHAR(sysdate, 'MONTH') CHARTEST FROM dual;

-- 문자형이 날짜형으로 변환
SQL>SELECT TO_DATE('2000/06/16','YYYY/MM/DD') FROM dual;

-- '1210616'의 문자열이 숫자형으로 변환
SQL>SELECT TO_NUMBER('1210616') FROM dual;
 


1. 기타함수

NVL
- NVL 함수는 NULL값을 다른 값으로 바꿀 때 쓰입니다.
- 모든 데이터 타입에 적용 가능합니다.
- 전환되는 값의 데이터 타입을 일치시켜야 합니다.

DECODE
- DECODE 함수는 데이터 들을 다른 값으로 바꾸어 줍니다.
- 형식 DECODE(VALUE, IF1, THEN1, IF2, THEN2...)
- VALUE 값이 IF1일경우에 THEN1값으로 바꾸어 주고 VALUE값이 IF2일경우에는 THEN2값으로 바꾸어 줍니다.

DUMP : DUMP는 바이트 크기와 해당 데이터 타입 코드를 반환합니다.
GREATEST : GREATEST함수는 검색값 중에서 가장 큰 값을 반환 합니다.
LEAST : LEAST함수는 GREATEST함수와 반대로 가장 작은 값을 반환합니다.

UID : 현재 사용자의 유일한 ID번호를 반환 합니다.
USER : 현재 오라클을 사용하는 사용자를 VARCHAR2형식으로 반환 합니다.

USERENV : USERENV 함수는 현재 세션의 환경 정보를 반환합니다.
  - ENTRYID : 사용 가능한 Auditing entry Identifier를 반환합니다.
  - LABEL : 현재 세션의 Label을 반환합니다.
  - LANGUAGE : 현재 세션에서 사용중인 언어와 테리토리 값을 반환합니다.
  - SESSIONID : Auditing(감사) Session ID를 반환 합니다.
  - TERMINAL : 현재 세션 터미널의 OS ID를 반환 합니다.

VSIZE : 해당 문자의 BYTE수를 반환 합니다. 해당 문자가 NULL이면 NULL값이 반환 됩니다.
 
-- 컬럼 comm의 값이 NULL일 경우, 0을 반환합니다.
SQL>SELECT empno, NVL(comm, 0) FROM emp WHERE deptno = 30;

-- 컬럼 deptno의 값이 10이며 'ACCOUNTING'으로
-- 컬럼 deptno의 값이 20이며 'RESEARCH'으로
-- 컬럼 deptno의 값이 30이며 'SALES'으로
-- 컬럼 deptno의 값이 40이며 'OPERATIONS'으로
SQL>SELECT deptno, DECODE(deptno, 10 , 'ACCOUNTING', 20 , 'RESEARCH', 30 , 'SALES', 40 , 'OPERATIONS') FROM emp;

-- 만약에 16대신 8을 넣으면 8진수로, 10를 넣으면 10진수로 변환이 됩니다.
-- 16, 10, 8, 17이 올수 있는데요 17은 단일 문자열을 반환합니다.
-- 결과값 중, Len은 ename의 해당 byte수 입니다.
SQL>SELECT ename, DUMP(ename, 16) "16진수" FROM emp WHERE ename = 'ALLEN'

-- 가장 큰수/가장 작은수 반환
SQL>SELECT GREATEST(10, 100, 5, -7) FROM dual;
SQL>SELECT LEAST(10, 100, 5, -7) FROM dual;

-- 현재 사용자의 이름과 ID값을 반환
SQL> SELECT USER, UID FROM DUAL;

-- 현재 세션의 환경정보를 반환
SQL> SELECT USERENV('LANGUAGE') FROM dual;

-- 현재 문자의 byte 수를 반환
SQL> SELECT VSIZE(ename), ename FROM emp  WHERE deptno = 30;

Posted by 나비:D
:

Posted by 나비:D
:

[MSSQL] 커서 사용

2007. 12. 5. 15:26

-- 커서를 돌릴 Select 문
declare Inout_Cursor_ItemCode_sub CURSOR
   FOR   select InoutNo, InoutGubun, InoutSerNo,
                CalcInOutQty, InOutPrice, InoutAmnt
         from   mmInoutItem
         where  SiteCode  = @SiteCode
           and  WhCode    = @WhCode
    and  InvStatus = @InvStatus
    and  ItemCode  = @ItemCode
    and  ((InoutDate > @InoutDate) or (InoutDate = @InoutDate and ItemDaySerno > @ItemDaySerno))
        order by InoutDate, ItemDaySerNo

--커서를 열어서 한 Row 씩 값을 받기 위함.
--여기서 받는 변수들은 별도로 선언을 해줘야 함.
   open Inout_Cursor_ItemCode_sub
   fetch next from Inout_Cursor_ItemCode_sub into @InoutNo_c, @InoutGubun_c, @InoutSerNo_c, @CalcInOutQty_c, @InOutPrice_c, @InoutAmnt_c
   
--커서를 돌림.
   WHILE @@FETCH_STATUS = 0
   BEGIN
   set @OhQty_c    = @OhQty_O
   set @OhAmnt_c   = @OhAmnt_O
   set @OhPrice_c  = @OhPrice_O
   
    update mmInoutItem
    set    OhQty   = @OhQty_O,
           OhPrice = @OhPrice_O,
           OhAmnt  = @OhAmnt_O
     where SiteCode   = @SiteCode
       and InoutNo    = @InoutNo_c
       and InoutGubun = @InoutGubun_c
       and InoutSerNo = @InoutSerNo_c

   FETCH NEXT from Inout_Cursor_ItemCode_sub into @InoutNo_c, @InoutGubun_c, @InoutSerNo_c, @CalcInOutQty_c, @InOutPrice_c, @InoutAmnt_c

--커서 닫음  
   END
   close Inout_Cursor_ItemCode_sub
   deallocate Inout_Cursor_ItemCode_sub

Posted by 나비:D
:

SQL Server 서비스 팩 버전과 에디션 확인

 

이 문서에서는 현재 SQL Server 버전 번호와 해당 제품 또는 서비스 팩(SP) 수준을 확인하는 방법을 설명합니다. 또한 SQL Server 7.0이나 SQL Server 2000을 사용 중인 경우 특정 에디션을 확인하는 방법도 설명합니다.

 

http://support.microsoft.com/default.aspx?scid=kb;ko;321185

Posted by 나비:D
:
출처 : MSDN 도움말
RAW[('ElementName')]

쿼리 결과를 사용하여 결과 집합의 각 행을 요소 태그로 <row /> 일반 식별자를 갖는 XML 요소로 변환합니다. 이 지시어를 사용하는 경우 필요에 따라 행 요소에 대한 이름을 지정할 수 있습니다. 결과 XML은 각 행에 대해 행 요소가 생성될 때 지정된 ElementName을 사용합니다. 자세한 내용은 RAW 모드 사용새 FOR XML 기능을 참조하십시오.

AUTO

단순하게 중첩된 XML 트리로 쿼리 결과를 반환합니다. 최소한 한 개의 열이 SELECT 절에 나열되는 FROM 절의 각 테이블은 XML 요소로 표시됩니다. SELECT 절에 나열되는 열은 해당 요소의 특성에 매핑됩니다. 자세한 내용은 AUTO 모드 사용새 FOR XML 기능을 참조하십시오.

EXPLICIT

결과 XML 트리 형태가 명시적으로 정의되도록 지정합니다. 쿼리는 이 모드를 사용하여 원하는 중첩에 대한 추가 정보가 명시적으로 지정되도록 특정 방식으로 작성되어야 합니다. 자세한 내용은 EXPLICIT 모드 사용새 FOR XML 기능을 참조하십시오.

PATH

요소와 특성을 혼합하고 추가 중첩을 사용하여 복잡한 속성을 나타내는 보다 간단한 방법을 제공합니다. FOR XML EXPLICIT 모드 쿼리를 사용하여 행 집합에서 이러한 종류의 XML을 구성할 수 있지만 PATH 모드는 복잡할 수도 있는 EXPLICIT 모드 쿼리 대신 훨씬 간단한 방법을 제공합니다. XML 유형 인스턴스를 반환하는 중첩 FOR XML 쿼리 및 TYPE 지시어 작성 기능과 함께 PATH 모드를 사용하면 보다 간편하게 쿼리를 작성할 수 있습니다. 이 모드는 대부분의 EXPLICIT 모드 쿼리 작성을 대신할 방법을 제공합니다. 기본적으로 PATH 모드는 결과 집합의 각 행에 대한 <row> 요소 래퍼를 생성합니다. 필요에 따라 요소 이름을 지정할 수 있습니다. 요소 이름을 지정한 경우 지정된 이름이 래퍼 요소 이름으로 사용됩니다. 빈 문자열(FOR XML PATH (''))을 제공하면 래퍼 요소가 생성되지 않습니다. 자세한 내용은 PATH 모드 사용를 참조하십시오.

XMLDATA

인라인 XDR(XML-Data Reduced) 스키마가 반환되어야 함을 지정합니다. 스키마는 인라인 스키마로 문서 앞에 놓이게 됩니다. 작업 예제의 경우 RAW 모드 사용를 참조하십시오.

XMLSCHEMA

인라인 W3C XML 스키마(XSD)를 반환합니다. 이 지시어를 지정할 때 필요에 따라 대상 네임스페이스 URI를 지정할 수 있습니다. 이렇게 하면 스키마에 지정된 네임스페이스를 반환합니다. 자세한 내용은 인라인 XSD 스키마 생성을 참조하십시오. 작업 예제의 경우 RAW 모드 사용를 참조하십시오.

ELEMENTS

ELEMENTS 옵션이 지정되면 열이 하위 요소로 반환됩니다. 그렇지 않은 경우에는 XML 특성에 매핑됩니다. 이 옵션은 RAW, AUTO 및 PATH 모드에서만 지원됩니다. 이 지시어를 사용하는 경우 필요에 따라 XSINIL 또는 ABSENT를 지정할 수 있습니다. XSINIL은 True로 설정된 xsi:nil 특성이 있는 요소가 NULL 열 값에 대해 생성되도록 지정합니다. 기본적으로 또는 ABSENT가 ELEMENTS와 함께 지정된 경우 요소가 NULL 값에 대해 생성되지 않습니다. 작업 예제의 경우 RAW 모드 사용AUTO 모드 사용를 참조하십시오.

BINARY BASE64

BINARY Base64 옵션이 지정되면 쿼리에서 반환되는 이진 데이터가 모두 base64 인코딩 형식으로 표시됩니다. RAW와 EXPLICIT 모드를 사용하여 이진 데이터를 검색하려면 이 옵션을 지정해야 합니다. AUTO 모드에서 이진 데이터는 기본적으로 참조로 반환됩니다. 작업 예제의 경우 RAW 모드 사용를 참조하십시오.

TYPE

쿼리가 결과를 xml 형식으로 반환하도록 지정합니다. 자세한 내용은 FOR XML 쿼리의 TYPE 지시어를 참조하십시오.

ROOT [('RootName')]

단일 최상위 요소가 결과 XML에 추가되도록 지정합니다. 필요에 따라 생성할 루트 요소 이름을 지정할 수 있습니다. 기본값은 "root"입니다.

Posted by 나비:D
:

머..여러 방법이 있겠지만..


날짜 형식이 2000-01-01 00: 00: 00.000 이래 나오는데..


이걸 내 입맛에 맛게 바꾸기!!



cast(datepart(mm,b_date) as varchar(10))


의 방법으로 원하는 날짜의 형식중 일부분만 뽑아와서 연결


cast(datepart(mm,b_date) as varchar(10)) + '-' +

cast(datepart(dd,b_date) as varchar(10)) + '  ' +

cast(datepart(yyyy, b_date) as varchar(10))


결과


01-01 2000


응용하면 여러가지 원하는 형태의 날짜로 출력 가능


select 문에 들어가면...


select

          cast(datepart(mm,b_date) as varchar(10)) + '-' +

          cast(datepart(dd,b_date) as varchar(10)) + '  ' +

          cast(datepart(yyyy, b_date) as varchar(10))

      as b_date

from

      bbs

where

      b_idx='100010'

Posted by 나비:D
:

CommandType 속성

CommandType 속성은 Command 개체의 형식을 나타내며, 다음 표의 값을 지정할 수 있다.

상수 설명
adCmdUnspecified -1 CommandType 인수를 지정하지 않는다.
adCmdUnknown 8 디폴트 값, Command 개체의 타입을 알 수 없음으로 지정한다.
adCmdText 1 명령어 또는 저장 프로시저를 텍스트로 지정한다.
adCmdTable 2 테이블을 지정한다(내부적으로 생성된 SQL 문장에 의해서 필드가 생성된다).
adCmdStoredProc 4 저장 프로시저를 지정한다.
adCmdFile 256 Persisted Recordset 개체의 파일명을 지정한다.
adCmdTableDirect 512 테이블을 지정한다(모든 필드가 생성된다).

CommandType 속성의 값이 디폴트 값인 adCmdUnknown일 경우에는 CommandText 속성이 SQL 문장인지, 저장 프로시저인지, 테이블의 이름인지를 결정하기 위해서 ADO는 Provider를 호출하게 되고, CommandType 속성을 정확하게 지정한 경우 보다 Command 개체가 수행하기 위해 부하가 더 걸리게 된다.
그렇기 때문에 CommandType 속성을 정확하게 지정하고 사용하면 디폴트 값을 사용하는 것보다 빠른 속도로 명령을 실행하게 된다.
CommandType 속성에 지정한 값과 실제 실행에 사용될 명령의 형식이 맞지 않을 경우에는 Execte 메서드를 사용할 때 오류가 발생하게 된다.

Execute 메서드를 사용할 때 함께 사용할 수 있는 옵션으로 adExecuteNoRecords가 있다. 이 옵션은 명령 또는 저장 프로시저가 반환 값을 가지지 않을 경우에 지정한다.

adExecuteNoRecords 상수는 최소한의 내부 프로세스만을 거치기 때문에 속도는 빠른 반면에 항상 adCmdText 또는 adCmdStoredProc 상수와 함께 사용해야 한다.

[예제]

다음 예제는 CommandType 속성을 adCmdText로 지정해서 Command 개체를 수행하는 예이다.

Private Sub cmdCommandType_Click()
   Dim adoCn As New ADODB.Connection
   Dim adoCmd As New ADODB.Command
   Dim strConn As String

   strConn = "Provider=sqloledb;" & _
         "Data Source=(local);Initial Catalog=Pubs;User ID=sa;Password=; "

   adoCn.Open strConn

   Set adoCmd.ActiveConnection = adoCn

   adoCmd.CommandText = "Update Authors Set au_lname = 'Chris' " & _
         " Where au_id = '172-32-1176'"

   adoCmd.CommandType = adCmdText

   adoCmd.Execute

   Set adoCmd = Nothing

   adoCn.Close
   Set adoCn = Nothing
End Sub

Posted by 나비:D
:

MS-SQL DATEADD 함수

2007. 12. 5. 15:21

DATEADD

지정한 날짜에 시간 간격을 더하여 새 datetime 값을 반환합니다.

구문

DATEADD ( datepart , number, date )

인수

datepart

새 값을 반환할 날짜 부분을 지정하는 매개 변수입니다.  다음은 Microsoft® SQL Server™에서 인식하는 날짜 부분과 약어입니다.

날짜 부분 약어
Year yy, yyyy
quarter qq, q
Month mm, m
dayofyear dy, y
Day dd, d
Week wk, ww
Hour hh
minute mi, n
second ss, s
millisecond ms

number

datepart에 더해지는 값입니다. 정수가 아닌 값을 지정하면 값의 소수 부분이 무시됩니다. 예를 들어 datepartday, number1.75를 지정한 경우, date는 1만큼 증가합니다.

date

날짜 형식에서 datetime이나 smalldatetime 값이나 문자열을 반환하는 식입니다.  날짜 지정에 대한 자세한 내용은 datetime 및 smalldatetime을 참조하십시오.

연도의 마지막 두 자리 숫자만 지정할 경우 two digit year cutoff 구성 옵션 값의 마지막 두 자리 숫자보다 작거나 같은 값은 구분 기준 연도와 같은 세기에 해당합니다.  이 옵션 값의 마지막 두 자리 숫자보다 큰 값은 구분 기준 연도보다 이전 세기에 해당합니다.  예를 들어, two digit year cutoff가 2049(기본값)일 경우 49는 2049년으로 해석되고 2050은 1950년으로 해석됩니다. 이러한 애매함을 피하기 위해 네 자리 연도를 사용하십시오.

반환 형식

datetime을 반환하지만 date 인수가 smalldatetime일 경우에는 smalldatetime을 반환합니다.

예제

다음은 pubs 데이터베이스의 titles 테이블에 대해 시간 프레임의 목록을 인쇄하는 예제입니다.  다음 시간 프레임은 기존 출판 날짜에 21일을 더한 날짜를 나타냅니다.

USE pubs
GO
SELECT DATEADD(day, 21, pubdate) AS timeframe
FROM titles
GO

결과 집합은 다음과 같습니다.

timeframe                                              
--------------------------
1991-07-03 00:00:00.000
1991-06-30 00:00:00.000
1991-07-21 00:00:00.000
1991-07-13 00:00:00.000
1991-06-30 00:00:00.000
1991-07-09 00:00:00.000
2000-08-21 02:22:04.830
1991-07-21 00:00:00.000
1994-07-03 00:00:00.000
2000-08-21 02:22:04.863
1991-11-11 00:00:00.000
1991-07-06 00:00:00.000
1991-10-26 00:00:00.000
1991-07-03 00:00:00.000
1991-07-03 00:00:00.000
1991-11-11 00:00:00.000
1991-07-03 00:00:00.000
1991-07-03 00:00:00.000

(18  적용됨)
Posted by 나비:D
:

select getdate()
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 1), 1), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 2), 2), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 3), 3), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 4), 4), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 5), 5), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 6), 6), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 7), 7), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 8), 8), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 9), 9), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 10), 10), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 11), 11), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 12), 12), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 13), 13), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 14), 14), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 20), 20), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 21), 21), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 22), 22), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 23), 23), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 24), 24), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 25), 25), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 100), 100), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 101), 101), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 102), 102), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 103), 103), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 104), 104), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 105), 105), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 106), 106), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 107), 107), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 108), 108), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 109), 109), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 110), 110), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 111), 111), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 112), 112), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 113), 113), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 114), 114), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 120), 120), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 121), 121), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 130), 130), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 131), 131), 20)

 


※ 모양은 쿼리 분석기로 실행해보세요 -0-

Posted by 나비:D
:

BLOG main image
by 나비:D

공지사항

카테고리

분류 전체보기 (278)
Programming? (0)
---------------------------.. (0)
나비의삽질 (5)
Application (177)
SQL (51)
Web (27)
etc. (14)
Omnia (0)
---------------------------.. (0)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

달력

«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Total :
Today : Yesterday :