MSSQL datetime 자료형을 string으로 형변환

상황 : 

MSSQL 데이터베이스에서 PHP로 select 쿼리를 날렸는데 다른 놈들은 다 잘 오는데 datetime 이 아이만 팔다리 짤려서 돌아왔다.

SQL : SELECT NO, NAME, REG_DATE FROM TABLE

RETURN : 1, 홍길동, 11


해결 : 

이에 불쌍히 여겨 팔다리 붙여 줄려고 찾아 본니..."CONVERT"를 이용하면 된다.

DATETIME 자료형은 CONVERT(CHAR(19), REG_DATE, 120) 으로 형변환 해야 한다.

SQL : SELECT NO, NAME, CONVERT(CHAR(19), REG_DATE, 120) AS REG_DATE FROM TABLE

RETURN : 1, 홍길동, 2017-01-12 13:12:20


배움 : 

CONVERT 에서 숫자 상수의 의미는 아래의 주소를 참고 한다.

https://docs.microsoft.com/ko-kr/sql/t-sql/functions/cast-and-convert-transact-sql


두 자리 연도 (yy) 

네 자리 연도(yyyy)

Standard

입/출력

-0 또는 100(1,2)datetime 및 smalldatetime의 기본값mon dd yyyy hh:miAM(또는 PM)
1101미국1 = mm/dd/yy
101 = mm/dd/yyyy
2102ANSI2 = yy.mm.dd
102 = yyyy.mm.dd
3103영국/프랑스3 = dd/mm/yy
103 = dd/mm/yyyy
4104독일어4 = dd.mm.yy
104 = dd.mm.yyyy
5105이탈리아어5 = dd-mm-yy
105 = dd-mm-yyyy
6106(1)-6 = dd mon yy
106 = dd mon yyyy
7107(1)-7 = Mon dd, yy
107 = Mon dd, yyyy
8108-hh:mi:ss
-

9 또는 109

기본값 + 밀리초mon dd yyyy hh:mi:ss:mmmAM(또는 PM)
10110USA10 = mm-dd-yy
110 = mm-dd-yyyy
11111일본11 = yy/mm/dd
111 = yyyy/mm/dd
12112ISO12 = yymmdd
112 = yyyymmdd
-

13 또는 113

유럽 기본값 + 밀리초dd mon yyyy hh:mi:ss:mmm(24h)
14114-hh:mi:ss:mmm(24h)
-

20 또는 120

ODBC 표준yyyy-mm-dd hh:mi:ss(24h)
-

21 또는 121

time, date, datetime2 및 datetimeoffset의 ODBC 표준(밀리초 포함) 기본값yyyy-mm-dd hh:mi:ss.mmm(24h)
-126(4)ISO8601yyyy-mm-ddThh:mi:ss.mmm(공백 없이)
참고: (mmm) 시간 (밀리초)에 대 한 값이 0 이면 밀리초 값 표시 되지 않습니다. 예를 들어, 값 '2012-11-07T18:26:20.000은 '2012-11-07T18:26:20'으로 표시됩니다.
-

127

ISO8601(Z 표준 시간대)yyyy-mm-ddThh:mi:ss.mmmZ (공백 없이)
참고: (mmm) 시간 (밀리초)에 대 한 값이 0 이면 밀리초 값 표시 되지 않습니다. 예를 들어, 값 '2012-11-07T18:26:20.000은 '2012-11-07T18:26:20'으로 표시됩니다.
-130(1,2)회교식 (5)dd mon yyyy hh:mi:ss:mmmAM
이 스타일에서 mon은 전체 월 이름에 대한 다중 토큰 회교식 유니코드 표현을 나타냅니다. 이 값 않습니다에서 올바르게 렌더링 되지 기본 미국 SSMS 설치 합니다.
-131(2)회교식 (5)dd/mm/yyyy hh:mi:ss:mmmAM