使用动态sql字符串插入日期时间值的最佳方法是什么,同时能够处理值为null的可能性?
当前语句从使用字符串构建的select语句插入表中。日期时间值存储在参数中,参数用于选择。
像这样:
SET @execsql = 'INSERT INTO ( start_date )
SELECT ( ''' + CAST(start_date as VARCHAR) + ''' + ')'
EXECUTE(@execsql)
答案 0 :(得分:0)
正在运行Sybase之类的
Set @execsql = 'Insert Into <table> ( start_date ) Select (' +
Case When start_date is null Then
'Null'
Else
'''' + Cast(start_date as Varchar) + ''''
End + ')'
Execute(@execsql)
应该做的伎俩
这是SQL Server的参考方式
Declare @sql nvarchar(max), @params navarchar(max)
Set @sql = N'Insert Into Table (start_date) Select (@start_date)'
Set @params = N'@start_date datetime'
Exec sp_executesql @sql, @params, @start_date
显然,在这种情况下你不需要动态SQL,但我认为这是一个更大的例子的一部分。
与动态SQL问题一样,建议阅读http://www.sommarskog.se/dynamic_sql.html。