본문 바로가기
㏈ª By β┖υΕJini/MS-SQL

MS-SQL 날짜 관련 함수 및 날짜 형식의 모든것~~~

by ㏈ª ☞ β┖υΕJini.κR 2009. 2. 17.


사용자 삽입 이미지
네이트온으로 친구가 날짜 형식 관련해서 궁금한게 있단다.

기존의 날짜 형식이 '2001102' 으로 넘어 오는 값을 '10-11 일' 연도를 제거 할려는데

좋은 방법 없냐고... 기존에 친구가 작성한 쿼리는  SUBSTRING 함수CASE문

이용하여 작성된 쿼리였다.

SELECT SUBSTRING(월추출) + '-' + SUBSTRING(일추출) +

CASE 문을 이용 1,2,3,4,5,6,7 조건에 따라 월,화,수,목,금,토,일

로 작성한 쿼리를 나한테 보내 주었다.

간단하게 CONVERT문과 DATENAME 문을 이용하여 변경해 보았다.

DECLARE @SDATE DATETIME
SET @SDATE = '20091011'

SELECT Convert(VARCHAR(5),@SDATE,110) +

' '+  LEFT(DATENAME(dw,@SDATE),1)

특정한 결과를 나타내기 위해서는 많은 방법이 있다. 하지만 가장 효율적으로

가져 올수 있는 방법.... 항상 생각 하게 된다.

이번에 날짜 함수와 MSSQL 의 날짜 형식에 대해서 한번 정리해 보았다.

날짜 함수 관련 DATE구분
DATE구분 구분약자 DATE구분 구분약자
year yy week wk
quarter qq hour hh
month mm minute mi
day of year dy second ss
day dd millisecond ms
항목 내용
GETDATE() 시스템에서 제공하는 날짜와 시간 값
산술연산 -- date + NUMBER
-- date - NUMBER


1 . GETDATE() 함수  ~~ System 의 현재 설정된 날짜값 반환

        SELECT GETDATE()
        2009-02-17 11:48:53.873

        SELECT GETDATE()+100
        2009-05-28 11:49:00.670

2 . CONVERT() 함수  ~~  결과값의 데이타 타입을 변환
 
        SELECT CONVERT(varchar(30), GETDATE(),100)
        02 17 2009 11:49AM

        SELECT CONVERT(varchar(30), GETDATE(),101)
        02/17/2009

        SELECT CONVERT(varchar(30), GETDATE(),102)
        2009.02.17

        SELECT CONVERT(varchar(30), GETDATE(),103)
        17/02/2009

        SELECT CONVERT(varchar(30), GETDATE(),104)
        17.02.2009

        SELECT CONVERT(varchar(30), GETDATE(),105)
        17-02-2009

        SELECT CONVERT(varchar(30), GETDATE(),106)
        17 02 2009

        SELECT CONVERT(varchar(30), GETDATE(),107)
        02 17, 2009

        SELECT CONVERT(varchar(30), GETDATE(),108)
        11:49:49

        SELECT CONVERT(varchar(30), GETDATE(),109)
        02 17 2009 11:49:54:437AM

        SELECT CONVERT(varchar(30), GETDATE(),110)
        02-17-2009

        SELECT CONVERT(varchar(30), GETDATE(),111)
        2009/02/17

        SELECT CONVERT(varchar(30), GETDATE(),112)
        20090217

        SELECT CONVERT(varchar(30), GETDATE(),113)
        17 02 2009 11:50:24:857

        SELECT CONVERT(varchar(30), GETDATE(),114)
        11:50:32:217


3 . DATEPART() 함수  ~~ 날짜에서 지정한 날짜형식 부분만 반환

        형식: DATEPART(날짜형식, 날짜)

        년/월/일/시/분/초/요일을 숫자 형식으로 ...
       
        SELECT DATEPART(yy, GETDATE())
        2009

        SELECT DATEPART(mm, GETDATE())
        2

        SELECT DATEPART(dd, GETDATE())
        17

        SELECT DATEPART(hour, GETDATE())
        11

        SELECT DATEPART(mi, GETDATE())
        50

        SELECT DATEPART(ss, GETDATE())
        58

        SELECT DATEPART(dw, GETDATE())
        3

 4 . YEAR() , MONTH() , DAY() 함수    ~~  해당 년,월,일을 각각 반환
        형식: YEAR(날짜) , MONTH(날짜) , DAY(날짜)

        SELECT YEAR(GETDATE())
        2009

        SELECT MONTH(GETDATE())
        2

        SELECT DAY(GETDATE())
        17

 5 . DATEADD() 함수  ~~  DATEADD함수는 날짜에 지정한 만큼을 ADD
        형식: DATEADD(날짜형식, 더할 값, 날짜)

        SELECT DATEADD(mm,20,GETDATE())
        2010-10-17 11:52:22.920 ~~ 현재날짜에 월에 20을 더한 날짜를 반환        
       
        SELECT DATEADD(dd,100,GETDATE())
        2009-05-28 11:52:31.653 ~~오늘부터 100일 후의 날짜를 반환      


  6 . DATEDIFF() 함수   ~~   DATEDIFF함수는 두 날짜사이의 날짜형식에 지정된 부분을 반환
        형식: DATEDIFF(날짜형식, 시작 날자, 끝 날짜)

        SELECT DATEDIFF(dd,GETDATE(),'3000.1.1') ~~ 현재날짜와 3000.1.1일 일수 반환
        361908

         SELECT DATEDIFF(MM,GETDATE(),'2010.1.1') ~~ 현재날짜와 2010.1.1일 일수 반환
        -11

 7 . DATENAME() 함수  ~~  DATENAME함수는 지정한 날짜의 날자형식의 이름으로 반환
        형식: DATENAME(날짜형식, 날짜)   

        SELECT DATENAME(mm,GETDATE())
        02

        SELECT DATENAME(dd,GETDATE())
        17

        SELECT DATENAME(dw,GETDATE())
        화요일