f--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),':','')

출처 - http://blog.danggun.net/1036


이전 글에서 테이블변수에 대해서 이야기를 했었습니다.
임시테이블과 테이블변수는 사용하는 방법면에서는 별차이가 없으나 성능상 차이가 있다고 합니다.
테이블 변수가 성능면에서 더 유리하다고 하는데....직접 비교는 해보지 않아서 잘 모르겠습니다 ㅎㅎㅎ
(참고 : [MSSQL] 저장프로시저에서 테이블(Table) 변수 사용하기)

그런이유로 테이블 변수를 더 권장하고 있으나....임시 테이블을 사용하는 방법도 알려드리겠습니다 ㅎㅎ


1.선언

선언 임시테이블이므로 크래딧테이블(Create Table)로 생성하면 됩니다.


1
2
3
4
5
--리턴값을 받기위한 임시 테이블
--Create Table [생성할 테이블 이름] ( [컬럼명] [데이터형], ... , [컬럼명] [데이터형] )
Create Table #Result ( nIndex int
        , sName varchar(16)
        , sID varchar(16))


2.입력
입력은 테이블변수와 마찬가지로 인서트(Insert)를 이용하면 됩니다.

1
2
3
4
--Insert [임시테이블] Exec [sql문]
Insert #Result Exec ProcTest @nIndox
            , @sName
            , @sID


3.사용
임시테이블도 일반적인 테이블 처럼 사용할 수 있습니다.

1
Set @nTemp = (Select * From #Result)


으앙 정신없다. 오랜만에 MSSQL , 아 진짜 DTG때문에 죽겠다. 꿈에서도 작업함ㅋㅋ


하루의 데이터를 정리해서 요약하는 프로시저가 도는데


문자열 이나 이진 데이터 는 잘립니다.


라는 문구와 함께 매번 프로시저가 종료되었다. 


원인은 입력 테이블의 크기보다 큰 값을 넣으려고 해서.


차량번호를 입력하는 VARCHAR(12) 짜리 열에 

경기32바1111 과 같은 제대로 된 차량번호가 아닌 테스트용 임시 차량번호 테스트경기32바1111 을 넣으려고 하니 

사이즈가 너무 커서 에러발생..


그래서 테이블을 지워버리고 해당 열을 VARCHAR(20)으로 사이즈를 바꿔서 새로 만들었다. 

해결끝.

mssql 테이블 복사 쿼리 입니다.


1. 테이블을 생성하면서 테이블의 데이타 복사


select * into 생성될테이블명 from 원본테이블명


테이블 구조만 복사하겠다면

select * into 생성될테이블명 from 원본테이블명 where 1=2


2. 테이블이 이미 생성되어 있는경우 데이타만 복사


insert into 카피될테이블명 select * from 원본테이블명


특정 데이타만 복사 하겠다면

insert into 카피될테이블명 select * from 원본테이블명 where 검색조건