Why do i get an error: cant convert '' to a timestamp?

Why do i get an error: cant convert '' to a timestamp?

无法将“”转换为时间戳。

我有一个来自 的 "date_column"(日期类型),我想 select 排在前 1 行。我有一个经过 10 tables 的过程,每个 table 都有列 "date_column",我想从每一列中获取前 1 个日期并根据该日期创建视图。我尝试使用 convert 语句,并得到:无法将 '' 转换为时间戳错误。如果我制作 @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

正如错误消息所暗示的那样,您无法将空白字符串转换为日期时间。我猜下面的查询获取空白字符串:

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