为什么我会收到错误:无法将''转换为时间戳?

时间:2015-01-19 13:25:43

标签: tsql sybase-iq

无法转换''到时间戳。

我有一个" date_column" (日期类型)来自女巫我想选择前1行。我有一个程序通过10个表,每个表都有列" date_column"我希望从每列获得前1个日期,并根据该日期创建一个视图。我尝试使用转换语句,并得到:无法转换''到时间戳错误。如果我使@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

1 个答案:

答案 0 :(得分: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