Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在处理日期时,哪一个更可取?sql日期时间还是nvarchar字符串?_Sql_Sql Server_Datetime - Fatal编程技术网

在处理日期时,哪一个更可取?sql日期时间还是nvarchar字符串?

在处理日期时,哪一个更可取?sql日期时间还是nvarchar字符串?,sql,sql-server,datetime,Sql,Sql Server,Datetime,SQLs内置的DateTime类型是否比nvarchar类型有任何优点 如果是你,你会用哪一个 我需要在SQLServer数据库中存储日期,我很想知道哪一个更好,为什么更好 我还想知道,例如,如果我将日期存储为字符串文字(我的意思是nvarchar),会发生什么?搜索需要更长的时间吗?或者他们在性能上是一样的 最后一个问题。如何将c#应用程序中的日期发送到tyeDateTime的sql字段?它与c#s DateTime有什么不同吗?你被赋予了一个日期日期类型是有原因的,你为什么不使用它呢 在文本

SQLs内置的
DateTime
类型是否比
nvarchar
类型有任何优点

如果是你,你会用哪一个

我需要在SQLServer数据库中存储日期,我很想知道哪一个更好,为什么更好

我还想知道,例如,如果我将日期存储为字符串文字(我的意思是
nvarchar
),会发生什么?搜索需要更长的时间吗?或者他们在性能上是一样的


最后一个问题。如何将c#应用程序中的日期发送到tye
DateTime
的sql字段?它与c#s DateTime有什么不同吗?

你被赋予了一个
日期
日期类型是有原因的,你为什么不使用它呢

在文本字段中存储“2012年3月2日”时会发生什么情况?是三月二号吗?是二月三日吗

将日期存储在
日期
日期时间
字段中,并在事后对日期进行任何格式设置

编辑

如果您必须存储日期,如
1391/7/1
,您可以选择:

  • 假设您使用的是SQL Server 2008或更高版本,请使用
    datetime2
    数据类型;它允许日期早于1753/01/01(这是
    datetime
    停止的位置)
  • 假设您使用的是SQL Server 2005或更早版本,请将日期存储为罗马日历日期,然后在应用程序中,使用日期/时间函数将日期和时间转换为波斯语日历
使用正确的数据类型(
date/datetime/datetime2
取决于时间组件的版本和要求)


优点是存储比作为字符串存储更紧凑(尤其是
nvarchar
,因为这是双字节)。针对无效日期(如2月30日)的内置验证。正确排序。避免在对其使用日期函数时将其强制转换回正确的数据类型。

如果我存储的是DateTime值,并且希望基于该值执行基于日期的计算,我将使用DateTime


将日期存储为字符串(varchar)会带来各种后勤问题,其中最重要的问题是以正确的格式呈现日期。同样,这也有利于DateTime。

我会选择DateTime,因为您可以直接在其上使用各种函数。 字符串不会有太多的麻烦,但是每次您想使用它做一些事情时,都必须强制转换数据


在两种类型的字段上搜索时没有实际的性能差异,因此在处理日期值时使用DateTime比使用字符串更好。

您必须意识到,与其他数据类型一样,提供DateTime数据类型是有原因的,您应该使用清楚表示数据的数据类型。。除此之外,您还可以获得datetime数据类型特有的所有功能/操作

最大的好处之一是数据的正确排序,如果使用nvarchar作为数据类型,这将无法直接实现。。即使你认为你现在不需要排序,在将来的某个时候,这将是有用的


此外,日期验证也会让您受益匪浅。存储的日期格式没有混淆,例如dd/mm或mm/dd等。

关于该主题有很多讨论。在SQLCentral论坛上有关于这个特定主题的好帖子


简言之,nvarchar的长度是datetime的两倍,因此它占用更多的空间,而且在长距离上,任何影响它的操作都会变慢。您将遇到一些验证问题和更多问题。

sql中不止一个DateTime,我应该使用哪一个?我还打算将日期存储在波斯语中(dotnet framework 4支持它)。不过,我希望将来遇到任何麻烦。为什么需要将日期存储在波斯语中。。日期表示日期,区域性无关紧要,您的表示层应处理在正确的区域性中显示日期的问题。波斯语的日期从1300到1400之间开始,而英语的日期从1900到2050。假设我需要存储一个日期,如(1391/7/1,如(yyyy/mm/dd))这样的日期,这会简单地保存吗?那么日期验证呢?谢谢,但是Date2也增加了一个时间,我可以忽略时间部分吗?