【问题标题】:C# changing date format from SQL ServerC# 从 SQL Server 更改日期格式
【发布时间】: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 数据类型(有几种,例如datetimesmalldatetime 等)。请改进这篇文章,以便我们为您提供帮助。
  • 另外,你真的不应该使用ArrayList
  • 你为什么使用cmd.ExecuteNonQuery();?它在你的代码中没用。
  • 所以sql表中的数据类型是DATE数据类型。我使用的是 ArrayList,因为它是我在较大项目中使用的。 cmd.ExecuteNonQuery() 只是从我的代码的另一部分复制和粘贴。

标签: c# sql


【解决方案1】:

你会这样做:

  f.tDate = row["tDate"].ToString("yyyy-MM-dd")

ToString() 函数接受格式字符串,因此您几乎可以将其转换为您想要的任何格式。

更多信息在这里:

https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings

【讨论】:

    【解决方案2】:

    我发现以前的一篇文章对我有很大帮助。

    Change date format in C# when reading from database and setting to label 我需要指定被格式化的数据是数据时间而不是 ToString() 被称为对象。

    感谢 E.J 让我走上正轨。

    【讨论】:

    • 我认为您应该简单地 accept the answer 帮助您,而不是发布指向另一个答案的链接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多