T-SQL INSERT语句中的安全日期时间

本文关键字:安全 日期 时间 INSERT 语句 T-SQL | 更新日期: 2023-09-27 18:09:08

最近在T-SQL INSERT INTO语句中使用DateTime出现了问题。在一台机器上工作良好,但可能无法在另一台机器上工作,我猜这与区域设置有关。

如果我有DateTime变量在SqlStatement字符串中使用它的安全方法是什么它将始终工作,无论本地系统设置是什么?

谢谢

T-SQL INSERT语句中的安全日期时间

使用参数化的INSERT查询

最有可能的是,您的代码正在组装SQL命令字符串。这也使您的代码容易受到SQL注入。

您应该按照Adrian的建议使用参数化查询。

另一种可能性是使用像这里描述的ISO 8601字符串表示,它独立于语言环境设置。

看起来像:

20110921 15:20:00

您可以使用参数化命令/存储过程,在存储中创建DateTime类型的参数,并在调用存储时从。net代码中分配它(因此。net和SQL将知道他们正在使用日期时间,并且永远不会混淆/交换日期和月份),或者您在插入命令之上包含一个特定的命令,然后用这种模式格式化所有DateTime字符串,例如:

SET DATEFORMAT dmy;
SET DATEFORMAT (Transact-SQL)