Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.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
C# DataTable修改日期格式-为什么?_C#_Sql_Asp.net_Sql Server_Datatable - Fatal编程技术网

C# DataTable修改日期格式-为什么?

C# DataTable修改日期格式-为什么?,c#,sql,asp.net,sql-server,datatable,C#,Sql,Asp.net,Sql Server,Datatable,因此,我从我的表中发出一个测试查询,如SELECT*,其中包含一个具有日期数据类型的start_date列。然后将此查询转换为数据表,然后将其转换为CSV文件。在SSMS中,查询只返回日期,如下所示: 但当我下载转换后的CSV文件时,日期如下: 我想知道的是为什么。为什么DataTable的行为是这样的?我在DataTable的文档中找不到直接的答案 这是在带有SQL Server 2008的ASP.NET 4.0 C平台上实现的 谢谢 DataTable使用.NET DateTime类,在创建

因此,我从我的表中发出一个测试查询,如SELECT*,其中包含一个具有日期数据类型的start_date列。然后将此查询转换为数据表,然后将其转换为CSV文件。在SSMS中,查询只返回日期,如下所示:

但当我下载转换后的CSV文件时,日期如下:

我想知道的是为什么。为什么DataTable的行为是这样的?我在DataTable的文档中找不到直接的答案

这是在带有SQL Server 2008的ASP.NET 4.0 C平台上实现的

谢谢

DataTable使用.NET DateTime类,在创建CSV时,它可能会使用DateTime.ToString方法转换为字符串。该方法使用当前线程区域性设置中的日期格式。创建CSV时,需要使用DateTime.ToString字符串格式来指定所需的DateTime格式

.NET平台上特定于区域性的日期时间格式的一般说明。

我认为这不是DataTable问题

使用CLR数据类型映射的T-SQL。这意味着,即使这种类型在SQL Server中只包含日期部分,当您将其映射到DateTime时,默认情况下它的时间部分也是


除此之外,此2015-06-17和6/17/2015 12:00:00 AM值只是此值的不同文本表示。文本表示取决于您当前的区域性设置和/或CSV文件设置等。

这是因为将数据表导出到CSV文件时转换为字符串。只是想一想:您不能明确声明/强制转换该列在数据表中应被视为日期而不是日期时间吗?@cyberj0g您能链接我吗一个解释DataTable使用DateTime的文档?谢谢@Jeano Ermitaño添加了答案的链接。@Mackan不,在.NET基类库中没有日期类。日期由DateTime表示,时间设置为午夜。是的,但有DateTime。日期:那么您是说,默认情况下,SQL Server中的日期数据类型为12:00:00 AM,但在查询时隐藏?我尝试将日期转换为varchar10,但它在CSV中仅正确显示为日期,而在SQL server@jeanoremitaño中不正确。如果指定日期,则它将存储该日期。它在c中添加时间部分,默认为00:00:00/12:00:00AM@Mackan因此,当我将查询结果转换为数据表时,SQL Server中的日期将转换为@cyberj0g所述的日期时间?@Jeanoremitaño在您的第二条评论中是。Sql Server日期类型映射为.NET日期时间类型。当您在数据表、数据集等中从SQL Server获取数据时。。它将被映射到DateTime类型。因为它只保留日期部分,所以它的时间部分默认为午夜。日期在SQL Server中也保存为二进制文件。