2015-01-19 1 views
1

''을 (를) 타임 스탬프로 변환 할 수 없습니다.왜 오류가 발생합니까? ''을 (를) 타임 스탬프로 변환합니까?

마녀의 "date_column"(날짜 유형)에서 맨 위의 1 행을 선택하고 싶습니다. 나는 10 개의 테이블을 가로 지르는 프로 시저를 가지고 있는데, 각 테이블에는 "date_column"열이 있으며 각 열의 첫 번째 날짜를 가져 와서 그 날짜를 기반으로 뷰를 만들고 싶습니다. 내가 변환 문을 시도하고 얻을 : 캔트 변환 ''타임 스탬프 오류. 내가 @top_date (날짜 유형)을 만들면 캔트가 뷰 생성 단계에서 숫자로 변환되므로 생각해 보면 varchar 여야합니다.

declare @table_name varchar(100) 
declare @top_date varchar(20) 
declare @sql varchar(1000) 

select @table_name = 'random_name' 

select @top_date = (select top 1 convert(varchar(12),date_column,112) from @table_name) 

set @sql = ('create view top_view as select * from ' + @table_name + ' where date_column = '''+ @top_date +'''') 
execute @sql 

답변

2

오류 메시지에서 알 수 있듯이 빈 문자열을 datetime으로 변환 할 수 없습니다. 아래 쿼리가 빈 문자열을 가져 오는 것 같습니다.

select top 1 convert(varchar(12),date_column,112) from @table_name 

출력을 얻으려면이 작은 검사를 추가하십시오.

where convert(varchar(12),date_column,112) <> '' 

FINAL CODE

declare @table_name varchar(100) 
declare @top_date varchar(20) 
declare @sql varchar(1000) 

select @table_name = 'random_name' 

select @top_date = (select top 1 convert(varchar(12),date_column,112) from @table_name where convert(varchar(12),date_column,112) <> '')

set @sql = ('create view top_view as select * from ' + @table_name + ' where date_column = '''+ @top_date +'''') 
execute @sql