【发布时间】:2020-10-13 21:25:39
【问题描述】:
我对 C#、SQL Server 和 Stackoverflow 比较陌生。
我希望我的日期格式从 SQL Server 到我的 C# 代码保持不变。 我有一个 SQL Server 表的屏幕截图:
.
我只是希望格式保持不变。我希望格式保持yyyy-mm-dd,而不是当我检索数据时格式为dd/mm/yyyy 0:00:00。
然后我使用以下代码从服务器检索数据:
ArrayList a = new ArrayList();
DataTable d = new DataTable();
string sql = "SELECT * FROM myServer";
MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand(sql, conn);
MySqlDataAdapter myA = new MySqlDataAdapter(cmd);
myA.Fill(d);
cmd.ExecuteNonQuery();
foreach (DataRow row in d.Rows)
{
FitnessManager f = new FitnessManager();
f.testDate = row["testDate"].ToString();
f.tDate = row["tDate"].ToString();
f.dtDate = row["dtDate"].ToString();
a.Add(f);
}
return a;
我希望ArrayList 中的结果是2020-10-13,而不是10/11/2020 0:00:00。
我不知道为什么会发生这种情况,如何解决这个问题。
【问题讨论】:
-
SQL 中的
DATE和 .NET 中的DateTime都是二进制对象。您在这两种情况下看到的是相同(或可能已翻译但相似)二进制数据的两种不同表示。在这两个系统中,都有许多选项可以控制从二进制数据到字符串的转换。 -
您发布的代码 sn-p 标记为 JavaScript,而不是 C#。表格截图没有用——请在 SQL 中指定您的 datetime 是哪种 SQL 数据类型(有几种,例如
datetime、smalldatetime等)。请改进这篇文章,以便我们为您提供帮助。 -
另外,你真的不应该使用
ArrayList -
你为什么使用
cmd.ExecuteNonQuery();?它在你的代码中没用。 -
所以sql表中的数据类型是DATE数据类型。我使用的是 ArrayList,因为它是我在较大项目中使用的。 cmd.ExecuteNonQuery() 只是从我的代码的另一部分复制和粘贴。