1

'' をタイムスタンプに変換できません。

一番上の1行を選択したい魔女から「date_column」(日付タイプ)があります。10 個のテーブルを通過する手順があり、各テーブルには列「date_column」があり、各列から上位 1 つの日付を取得し、その日付に基づいてビューを作成したいと考えています。convert ステートメントを試してみたところ、'' をタイムスタンプ エラーに変換できません。(日付型)を作成すると、ビュー作成ステップで数値に変換できないため、 varchar@top_dateでなければならないと思います。

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
4

1 に答える 1

2

エラー メッセージが示すように、空白の文字列を日時に変換することはできません。以下のクエリは空白の文字列をフェッチすると推測しています。

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
于 2015-01-19T14:00:08.277 に答える