본문 바로가기
Cito 일/SQL

[MSSQL] 날짜관련 함수

by citopes 2015. 6. 11.
반응형


MSSQL의 날짜 관련 함수들입니다.


GETDATE()
    GETDATE()는 현재 시간을 표시해준다.

select getdate() ;  (시스템에 설정된 나라의 형식을 따른다.)
==> 2015-06-11 오전 10:29:59


DATEADD
    DATEADD함수는 날자에 지정한 만큼을 더한다.
    형식: DATEADD(날자형식, 더할 값, 날자) 

[현재일자에 20개월추가 (월 추가)]

select dateadd(mm,20,getdate()); ==> 2017-02-11 오전 10:29:18

[현재일자에 100일 후의 날짜]
select dateadd(dd,100,getdate()); ==> 2015-09-19 오전 10:29:30


DATEDIFF
    DATEDIFF함수는 두 날자사이의 날자형식에 지정된 부분을 돌려준다.
    형식: DATEDIFF(날자형식, 시작 날자, 끝 날자) 

[적어준 날의 년과 현재날의 년과의 차이를 출력]
select datediff(yy,'1945-08-15',getdate()); ==> 70

[적어준 날의 일과 현재날의 일과의 차이를 출력]

select datediff(dd,'1945-08-15',getdate()); ==> 25502


DATENAME
    DATENAME함수는 지정한 날자의 날자형식의 이름을 돌려준다.
    형식: DATENAME(날자형식, 날자) 

select datename(WEEKDAY,getdate()); ==> 목요일


DATEPART
    DATEPART함수는 날자에서 지정한 날자형식부분만 추출해줍니다.
    형식: DATEPART(날자형식, 날자) 
    주일은 일요일부터 1로 시작해서 토요일날 7로 끝나게 된다.

SELECT DATEPART(YEAR,GETDATE());  ==> 2015

SELECT DATEPART(YYYY,GETDATE());  ==> 2015

SELECT DATEPART(YY,GETDATE());  ==> 2015

SELECT DATEPART(MONTH,GETDATE());  ==> 6

SELECT DATEPART(MM,GETDATE());  ==> 6

SELECT DATEPART(DAY,GETDATE());  ==> 11

SELECT DATEPART(DD,GETDATE());  ==> 11

[올해 몇 분기]

SELECT DATEPART(QQ,GETDATE());  ==> 2

[올해 몇째 날]

SELECT DATEPART(DAYOFYEAR,GETDATE());  ==> 162


[올해 몇주차]
SELECT
 DATEPART(WK,GETDATE());  ==> 24 

SELECT DATEPART(WW,GETDATE());  ==> 24 

SELECT DATEPART(WEEK,GETDATE());  ==> 24


[금주의 몇번째 날]
SELECT DATEPART(WEEKDAY,GETDATE());  ==> 5 

SELECT DATEPART(DW,GETDATE());  ==> 5
SELECT

CASE DATEPART(WEEKDAY, GETDATE()) 

  WHEN '1' THEN '일요일'

  WHEN '2' THEN '월요일'

  WHEN '3' THEN '화요일'

  WHEN '4' THEN '수요일'

  WHEN '5' THEN '목요일'

  WHEN '6' THEN '금요일'

  ELSE '토요일'

END AS '요일';  ==> 목요일




날짜 형식 변경

    날짜형식의 데이터를 출력하는 형식을 지정합니다.
    형식 : 
CONVERT(변경될문자열의 데이타타입및길이, 날짜데이타, 출력형식)

YYYY/MM/DD
Select Convert(varchar(10),Getdate(),111); ==> 2015/06/11


YYYYMMDD

Select Convert(varchar(10),Getdate(),112); ==> 20150611


HH:MM:SS

Select Convert(varchar(8),Getdate(),108); ==> 10:24:47


HH:MM:SS:mmm

Select Convert(varchar(12),Getdate(),114); ==> 10:24:47:290


HHMMSS

Select Replace(Convert(varchar(8),Getdate(),108),':',''); ==> 102447


HHMMSSmmm

Select Replace(Convert(varchar(12),Getdate(),114),':',''); ==> 102447290


YYYY/MM/DD HH:MM:SS

Select Replace(Convert(varchar(30),Getdate(),120),'-','/'); ==> 2015/06/11 10:24:47


YYYY/MM/DD HH:MM:SS

Select Replace(Convert(varchar(30),Getdate(),121),'-','/'); ==> 2015/06/11 10:24:47.290


YYYY/MM/DD HH:MM:SS

Select Convert(varchar(10),Getdate(),111) + Space(1) + Convert(varchar(8),Getdate(),108);
==> 2015/06/11 10:24:47


YYYYMMDDHHMMSS

Select Convert(varchar(10),Getdate(),112) + Replace(Convert(varchar(8),Getdate(),108),':','');
==> 20150611102447






반응형

댓글