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
无法将“”转换为时间戳。
我有一个来自 的 "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