Ari*_*rif 5 sql-server datetime
说,我有一个这样的表:
表名"DateTimeFormatCheck">
我用下面的查询来插入:
Insert into [dbo].[DateTimeFormatCheck] ([DateTimeCheck]) values('11/19/2014 1:29 PM')
Run Code Online (Sandbox Code Playgroud)
插入日期如2014-11-19 13:29:00.000,但我的插入格式(M/d/yyyy h:m tt)不喜欢它.
现在我想知道SQL Server如何检测我提供的字符串日期格式?和为什么它总是提供这种格式YYYY-MM-DD HH:MM:SS插入后?
谢谢
Pan*_*vos 11
不要那样做!不要使用字符串而不是日期,也不要使用特定于文化的日期或日期时间格式,这是灾难的一种方法.
SQL Server没有"日期格式",只是用于将日期转换为字符串和从字符串转换日期的格式.其中一个是默认值,由服务器的排序规则控制.您既不能假设也不应该依赖于特定的排序规则,因此您应该尽可能避免转换.此外,传递字符串值可以防止SQL Server在日期列上使用索引,因为它必须将字符串转换为基础列类型.
将日期作为日期类型的变量或参数传递更容易,更安全.您可以通过这种方式避免整个转换混乱,来回避免SQL注入攻击.
没有理由将字符串而不是日期传递给服务器.所有SQL Server客户端(包括ADO.NET)都允许您执行参数化查询.NHibernate和Entity Framework之类的ORM也为日期类型的列生成参数化查询.
每当您需要创建字符串文字时,请使用其中一种不变格式,如20140913或2012-11-07T18:26:20
您可以在编写国际T-SQL语句时阅读更多相关信息
| 归档时间: |
|
| 查看次数: |
17825 次 |
| 最近记录: |