SQLs 内置DateTime
类型比类型有什么优点nvarchar
吗?
如果是你,你会用哪一个?
我需要将日期存储在我的 SQLServer 数据库中,我很想知道哪个更好以及为什么更好。
我还想知道如果我将日期存储为字符串文字(我的意思是nvarchar
)会发生什么?是否需要更长的时间进行搜索?或者它们在性能方面是一样的?
最后一个问题。如何将日期从我的 c# 应用程序发送到 tye 的 sql 字段DateTime
?它与 c#s DateTime 有什么不同吗?
SQLs 内置DateTime
类型比类型有什么优点nvarchar
吗?
如果是你,你会用哪一个?
我需要将日期存储在我的 SQLServer 数据库中,我很想知道哪个更好以及为什么更好。
我还想知道如果我将日期存储为字符串文字(我的意思是nvarchar
)会发生什么?是否需要更长的时间进行搜索?或者它们在性能方面是一样的?
最后一个问题。如何将日期从我的 c# 应用程序发送到 tye 的 sql 字段DateTime
?它与 c#s DateTime 有什么不同吗?
给你一个date
日期类型是有原因的,你为什么不使用它?
当您在文本字段中存储“3/2/2012”时会发生什么?是3月2日吗?是2月3日吗?
将日期存储在date
ordatetime
字段中,并在事后对日期进行任何格式化。
编辑
如果您必须存储日期,如1391/7/1
,您的选择是:
datetime2
数据类型;它允许早于 1753/01/01 的日期(这是datetime
停止的时间)。使用正确的数据类型(date/datetime/datetime2
取决于版本和时间组件的要求)。
优点是存储比存储为字符串更紧凑(特别是nvarchar
因为这是双字节)。内置针对无效日期(例如 2 月 30 日)的验证。正确排序。避免在使用日期函数时将其转换回正确的数据类型。
如果我正在存储一个 DateTime 值,并且我希望基于它执行基于日期的计算,我将使用 DateTime。
将日期存储为字符串 (varchars) 会带来各种后勤问题,其中最重要的是以正确的格式呈现日期。再次,这有利于 DateTime。
关于这个主题有很多讨论。SQLCentral 论坛上有关于这个特定主题 DateTime 或 nvarchar的好帖子。
简而言之,nvarchar 的时间是 datetime 的两倍,因此它需要更多的空间,而且从长远来看,任何影响它的操作都会变慢。您将遇到一些验证问题等等。
我会选择 DateTime,因为您可以直接在其上使用各种功能。字符串不会太麻烦,但每次你想用它做某事时都必须转换数据。
在搜索这两种类型的字段时没有真正的性能差异,因此在使用日期值时使用 DateTime 比使用字符串更好。
您必须意识到像其他数据类型一样提供 datetime 数据类型是有原因的,并且您应该使用清楚地表示您的数据的数据类型。除此之外,您还可以获得 datetime 数据类型特有的所有功能/操作。
最大的收获之一是正确的数据排序,如果你使用 nvarchar 作为你的数据类型,这将是不可能的。即使你认为你现在不需要排序,将来会有一段时间这会很有用。
日期验证也是您将从中受益的东西。存储的日期格式没有混淆,即 dd/mm 或 mm/dd 等。