SQL Server默认日期格式/语言与在asp.net应用程序中呈现为String的DateTime对象之间是否存在任何关系?
默认的SqlServer日期格式是否会影响我生成的报告中的DateTime字符串? asp.net应用程序正在使用EntityFramework来获取数据。
答案 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)(通常使用datetime
或datetime2
完成), ,您的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" />