2015-02-07 31 views
-2

insert into mytable values(1,'06 -06-2012');为什么我们在插入时在sql server中的单引号中包含日期?

为什么我们在单引号中包含日期?!!但是,在通过参数化的查询?时,我们不会这么做。

+0

可能是您需要与Microsoft交谈 – 2015-02-07 16:03:15

+1

问题:编写代码的人是谁?答案:编译器如果您需要日期或字符串文本,编译器能够理解的语法是它以一个单独的开始和结束quote。参数以@符号开头,所以编译器知道它在内存中引用一个地方,而不是日期或字符串文字。这完全是关于语法和编译器理解的。 – Jeremy 2015-02-07 17:33:40

回答

3

使用文字,SQL Server数据库引擎在查询执行期间将值解析为本机格式。 datetime值被解析为一个8字节的本地二进制表示。

参数值以本地二进制格式传递给SQL Server,因此不使用enclosurse。客户端API根据声明的参数数据类型转换参数值,并使用TDS协议远程过程调用将二进制值传递给SQL Server。 SQL Server根本不需要解析该值,但如果参数数据类型与查询中所需的数据类型不匹配,仍可能需要转换。

例如,如果您为表格数据类型的日期时间传递字符串参数值'06 -12-2014',则SQL Server会根据会话DATEFORMAT设置将参数字符串值转换为日期时间(可以解释'2014-06-12'或'2014-12-06。传递本地日期时间参数可以避免模糊的日期格式,因为将值转换为本地二进制值的任务已经在客户端上完成。

相关问题