当前位置:  开发笔记 > 数据库 > 正文

将DateTime解析为SQL Server的最佳方法

如何解决《将DateTime解析为SQLServer的最佳方法》经验,为你挑选了4个好方法。

我想知道什么是将DateTime对象解析到SQL服务器的最佳方法.

您在代码中生成SQL的位置.

我总是使用类似的东西,DateTime.Now.TolongDateString()并且取得了很好的效果,除了今天我遇到了错误,它让我思考.

System.Data.SqlClient.SqlException: Conversion failed when converting datetime from character string

那么每个人的想法和推荐是什么方式,无论有什么设置,都可以运行所有SQL服务器.

也许是这样的 DateTime.Now.ToString("yyyy/MM/dd")



1> SQLMenace..:

只有2种安全格式

ISO和ISO8601

ISO = yymmdd

ISO8601 = yyyy-mm-dd Thh:mm:ss:mmm(无空格)(注意T)

另请参见此处:为SQL Server设置标准DateFormat


上面有错误的时钟(12小时).应该是yyyy-MM-ddTHH:mm:ss.FFF
Kristof,如果你打算在格式中使用破折号,那么你需要使用T.如果删除破折号,那么它将永远不会被误解.而不是'1997-12-09'使用'19971209'.

2> Kev..:

为什么不参数化查询并将DateTime值作为SQL DateTime输入参数传递?

例如 INSERT INTO SomeTable (Blah, MyDateTime) VALUES (1, @MyDateTime)

那你就可以肯定了.即使您正在生成SQL,您应该能够专门处理这个问题吗?



3> Netricity..:

我发现需要这种特定的格式:

DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fff")

注意外壳和没有任何空格.根据Robyn Page的说法,这是一种普遍的方法.



4> kristof..:

您应该使用参数化查询,并将DateTime对象作为SQL DateTime参数传递.

如果将DateTime解析为String,则必须在应用程序服务器上处理数据库服务器上的本地化设置.这可能会导致一些令人讨厌的惊喜,例如将日期视为美国格式,另一方面是英国.字符串9/12/2000可以是9月12日或12月9日.因此,在应用程序和数据库之间进行交换时,请将数据保留在DateTime对象/类型中.

只有在将DateTime解析为String时才会显示数据(GUI).但是,在解析时,应确保使用正确的本地化设置,以用户期望的格式显示它.

同样的原则适用于其他数据类型,例如float.这个字符串的表示形式取决于语言环境,我想你在将它传递给数据库时不会将float解析为String,那为什么要使用DateTime呢?

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有