SQL:datetime或varchar作为存储过程的参数数据类型

时间:2009-10-27 11:51:22

标签: sql

我有一个SQL服务器存储过程,它接受日期作为输入参数在其中构建查询。所以在定义存储过程时我应该使用哪个数据类型参数。表示使用nvarchar(15)和datetime之间的区别。

1 : create procedure TestProcedure(@startDate datetime)
        and
2 :   create procedure TestProcedure(@startDate nvarchar(15))

在性能方面我使用datetime而不是varchar是否有任何优势

2 个答案:

答案 0 :(得分:6)

是的,始终使用datetime类型。它更准确。日期时间类型也总是8个字节,因此传输时间小于15个字符。

然后,前端负责处理文化/区域设置问题,例如MDY,DMY或YMD组件字段排序。 (如果数据库是在美国语言环境下运行而用户在英国,'3/4/2009'是指4月3日或3月4日?)

答案 1 :(得分:1)

如果您知道参数只有日期,则使用适当的数据类型会更好,因为它更小,可以更快地进行比较。它还可以防止提供无效值。