기존의 날짜 형식이 '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 | 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())
화요일