반응형

/**********************************************************************************************
-- Title : [2k] 특정일(자) 구하기 및 일자의 문자 변환
-- Reference : 웹검색
-- Key word : dateadd, datepart, datediff, getdate 일짜 일자 요일 날짜 날자
**********************************************************************************************/

-- 요일 구하기
-- 0:일, 1:월, 2:화, 3:수, 4:목, 5:금, 6:토
select DATEPART(DW, getdate());

-- 돌아오는 월요일(xten_upd_dt) 찾아내기
declare @dd datetime;
set @dd = '2013-01-06';

select case when DATEPART(DW, @dd) = 1
            then convert(nchar(8), DATEADD(wk, DATEDIFF(wk,0,@dd), 0), 112)
            else convert(nchar(8), DATEADD(wk, DATEDIFF(wk,0,@dd), 7), 112)
       end "돌아오는 월요일"

--현재주의 월요일 구하기
select DATEADD(wk, DATEDIFF(wk,0,getdate()), 0) "현재주의 월요일"

-- 다음주의 월요일 구하기
select DATEADD(wk, DATEDIFF(wk,0,getdate()), 7) "다음주의 월요일"
 
--현재해의 첫째날 구하기
select DATEADD(yy, DATEDIFF(yy,0,getdate()), 0) "현재해의 첫째날"

--현재분기의 첫째날 구하기
select DATEADD(qq, DATEDIFF(qq,0,getdate()), 0) "현재분기의 첫째날"
 
--현재날의 자정주의 구하기
select DATEADD(dd, DATEDIFF(dd,0,getdate()), 0) "현재날의 자정주의?"

--지난달의 마지막날 구하기
select dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()  ), 0)) "지난달의 마지막날"

--지난해의 마지막날 구하기
select dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()  ), 0)) "지난해의 마지막날"

--현재달의 마지막날 구하기
select dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate()  )+1, 0)) "현재달의 마지막날"
 
--현재해의 마지막날 구하기
select dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()  )+1, 0)) "현재해의 마지막날"
 
--현재달의 첫째주 월요일 구하기
select DATEADD(wk, DATEDIFF(wk,0, dateadd(dd,6-datepart(day,getdate()),getdate())), 0) "현재달의 첫째주 월요일"

--SQL 다음주 오늘은 몇 일인가?
SELECT DATEADD(dd, 7, GETDATE()), DATEADD(mm,-1,'20000101')

--SQL 올해는 몇 시간일까?  결혼 며칠째인가?
SELECT DATEDIFF(hh,'20000101','20010101'),DATEDIFF(dd,'19951104',GETDATE())

--SQL DATEPART 함수의 사용
SELECT DATEPART(yy, GETDATE()), DATEPART(mm, GETDATE()), DATEPART(dd, GETDATE())

--SQL 오늘은 몇 분기에 속하는가? , 올해의 몇 일째인가?, 올해의 몇 주째인가?, 무슨 요일인가?
SELECT DATEPART(qq, GETDATE()) "몇분기", DATEPART(dy, GETDATE()) "몇일"
       , DATEPART(ww, GETDATE()) "몇주", DATEPART(dw, GETDATE()) "무슨요일"

--월 시작일과 마지막날 구하기
DECLARE @xDate datetime
SET @xDate = '20000203'
IF ISDATE(@xDate)= 0
      BEGIN
            RAISERROR( '작업일시를 확인하여 주십시오.', 10, 1)
            RETURN
      END
SELECT CONVERT(datetime, CONVERT(char(6),@xDate,112)+'01', 112),
DATEADD(dd,-1,DATEADD(mm,1,@xDate-Day(@xDate)))
GO
 
-- SQL 날짜를 문자열로 변환
SELECT GETDATE(),CONVERT(char(10),GETDATE(),12), CONVERT(char(10),GETDATE(),112)
GO

-- SQL 날짜를 문자열로 변환
SELECT CONVERT(char(10),GETDATE(),102), CONVERT(varchar(20),GETDATE(),20)
GO

-- SQL 문자열을 날짜 및 시간 데이터형으로 변환
SELECT CONVERT(smalldatetime,'20000723')+1, CONVERT(smalldatetime,'00.07.23',2)+1
GO
 
-- SQL 년도2자리 사용 시 주의 사항은 49년 까지는 2000 년대로 50년부터는 1900 년대로 변환된다.
SELECT CONVERT(datetime,'490101'), CONVERT(datetime,'500101')
GO

 

반응형

+ Recent posts