使用动态sql插入日期时间值的最佳方法是什么

时间:2012-11-16 10:43:00

标签: sql tsql sybase

使用动态sql字符串插入日期时间值的最佳方法是什么,同时能够处理值为null的可能性?

当前语句从使用字符串构建的select语句插入表中。日期时间值存储在参数中,参数用于选择。

像这样:

SET @execsql = 'INSERT INTO ( start_date )
SELECT ( ''' + CAST(start_date as VARCHAR) + ''' + ')'
EXECUTE(@execsql)

1 个答案:

答案 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