Mssql varchar 시간변환 - mssql varchar siganbyeonhwan


프로그래밍/MSSQL

2017. 6. 23. 09:46

Mssql varchar 시간변환 - mssql varchar siganbyeonhwan

VARCHAR타입의 문자를 DATETIME으로 변경해보자

VARCHAR(8)의 문자 '20170615'

VARCHAR(6)의 문자 '172929'

이것을 DATETIME형식의 '2017-06-15 17:29:29.000'으로 변환해보자

즉, yyyyMMdd hhmmss를 yyyy-MM-dd hh:mm:ss로 변환

DECLARE @yyyymmdd VARCHAR(8) = '20170615'
DECLARE @hhmmss VARCHAR(6) = '172929'
 
SELECT CONVERT(DATETIME, @yyyymmdd + ' ' + STUFF(STUFF(@hhmmss, 3, 0, ':'), 6, 0, ':'), 120)

결과 데이터
[MSSQL] CONVERT, CAST 형변환 함수
[MSSQL] 월 말일 날짜 가져오기
[MSSQL] 특정 기간에 해당하는 모든 날짜 (MASTER..SPT_VALUES)
[MSSQL] 날짜 변환표 CONVERT, GETDATE() 날짜 형식 포맷 변경
[MSSQL] 세로 데이터 가로로 출력 (데이터 한줄로 출력) STUFF, FOR XML PATH
[MSSQL] 문자열 치환함수 (REPLACE, STUFF)

'프로그래밍/MSSQL' Related Articles


날짜 함수 관련 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())
        화요일