DATETIME 혹은 SMALLDATETIME 은 날짜 뿐만 아니라 시간(시,분,초,밀리세컨드)까지도 함께 가진다.
날짜 데이터를 자유롭게 변경하려면 CONVERT()함수 또는 CAST()와 함께 유형(STYLE)에 대해 알아야 한다.
유형.................의미...........나타나는 형식
0or100...............default.........mon dd yyyy hh:mi AM (or PM)
101...................USA.............mm/dd/yy
102...................ANSI.............yy.mm.dd
103.............British/French......dd/mm/yy
104................German.............dd.mm.yy
105................Italian...............dd-mm-yy
106................... - .................dd mon yy
107................... - .................mon dd,yy
108................... - .................hh:mi:ss
9or109 ...default+milliseconds..mon dd,yyyy hh:mi:ss:msAM(or PM)
110..................USA.................mm-dd-yy
111..................Japan..............yy/mm/dd
112..................ISO.................yy.mm.dd
13or113...Europe default+milliseconds...dd mon yyyy hh:mi:ss:ms 24h)
114..................... - .................hh:mi:ss:ms(24h)
ex) ms(밀리세컨드)까지 데이터를 가져올 경우
--> SELECT CONVERT(varchar(30), GETDATE(),9)
ex) 연월일(yy.mm.dd)형식으로 가져올 경우
--> SELECT CONVERT( varchar(30), GETDATE(),2)
--> SELECT CONVERT( varchar(30), GETDATE(),102)
부분적으로 날짜 데이터를 가져오고 싶을경우 DATEPART()를 사용
datepart.................약어...............범위
year.......................yy...............1753 - 9999
quarter...................qq.................1 - 4
month.....................mm................1 - 12
day of year..............dy.................1 - 366
day.........................dd.................1 - 31
week......................wk.................0 - 51
weekday.................dw.................1 - 7 (1이 일요일)
hour........................hh.................0 - 23
minute.....................mi..................0 - 59
second...................ss..................0 - 59
millisecond..............ms..................0 - 999
ex) 월 만 가져올경우
--> SELECT DATEPART(mm, GETDATE())
--> SELECT MONTH(GETDATE()) -- 7.0 이후
ex) 오늘로부터 20개월 후
--> SELECT DATEADD(mm, 20, GETDATE())
ex) 오늘로부터 100일 후
--> SELECT DATEADD(dd, 100, GETDATE())
--> SELECT GETDATE() + 100 -- 7.0 이후
ex) 3000년까지 몇일남았는지?
--> SELECT DATEDIFF(dd, GETDATE(), '3000.1.1')
--Getdate()
Select Getdate()
--YYYY/MM/DD
Select Convert(varchar(10),Getdate(),111)
--YYYYMMDD
Select Convert(varchar(10),Getdate(),112)
--HH:MM:SS
Select Convert(varchar(8),Getdate(),108)
--HH:MM:SS:mmm
Select Convert(varchar(12),Getdate(),114)
--HHMMSS
Select Replace(Convert(varchar(8),Getdate(),108),':','')
--HHMMSSmmm
Select Replace(Convert(varchar(12),Getdate(),114),':','')
--YYYY/MM/DD HH:MM:SS
Select Replace(Convert(varchar(30),Getdate(),120),'-','/')
--YYYY/MM/DD HH:MM:SS
Select Replace(Convert(varchar(30),Getdate(),121),'-','/')
--YYYY/MM/DD HH:MM:SS
Select Convert(varchar(10),Getdate(),111) + Space(1) + Convert(varchar(8),Getdate(),108)
--YYYYMMDDHHMMSS
Select Convert(varchar(10),Getdate(),112) + Replace(Convert(varchar(8),Getdate(),108),':','')