SQL Server默认的dateformat / language会影响我的DateTime对象toString渲染吗?

时间:2017-07-19 10:58:42

标签: c# asp.net sql-server datetime

SQL Server默认日期格式/语言与在asp.net应用程序中呈现为String的DateTime对象之间是否存在任何关系?

默认的SqlServer日期格式是否会影响我生成的报告中的DateTime字符串? asp.net应用程序正在使用EntityFramework来获取数据。

2 个答案:

答案 0 :(得分:2)

SQL Server将datetime类型存储为二进制文件。它使用8个字节。前4个字节用于日期,第二个4字节用于该时间。

此类型为mapped,CLR方面为System.DateTime,此System.DateTime 的格式也为<{3}}。它只有日期和时间值。它基于Ticks wihch是公历中自0001年1月1日午夜12:00:00起经过的100纳秒间隔的数量。

如您所见,两者实际上都是数值。

另一方面,&#34;格式&#34;当您获得 textual (又名字符串)表示时,概念适用,这通常使用C#中的DateTime.ToString方法和SQL中的Format方法完成服务器端。

因此,如果您为SQL Server中的System.DateTime值选择了正确的数据类型(请参阅:Bad habits to kick : choosing the wrong data type)(通常使用datetimedatetime2完成), ,您的SQL Server默认日期格式/语言不会影响为报告生成的格式。

当您使用DateTime值直接提交报告时,ToString()方法会自动调用(如果没有自定义格式等),此方法使用标准The "G" Format Specifier您的CurrentCulture设置。

对于初学者来说,了解DateTime实例与其字符串表示(格式)之间的区别非常重要。

答案 1 :(得分:0)

引用MSDN

  

DateTime toString方法转换当前DateTime的值   使用指定的对象到其等效的字符串表示   格式和当前文化的格式约定。

这意味着,不,它不会。渲染将受到应用程序文化设置的影响 - 因此,您将处理它,它将相应地显示日期时间。

当前文化(再次见MSDN

  

文化是执行线程的属性。这是只读的   property等效于检索返回的CultureInfo对象   由Thread.CurrentCulture属性。当一个线程启动时,它的   文化最初是通过调用Windows来确定的   GetUserDefaultLocaleName函数。

在ASP.NET的情况下,这很可能是从用户的操作系统文化设置派生的设置(我在这里采用了很长的快捷方式)。但是在web.config(或其他地方)中可能是overridden

<globalization uiCulture="en" culture="en-US" />