1

我是 MySQL 和 C# 的新手。

我将某些值存储在数据类型为 Date 的列中。我不想要时间,只想要存储日期。在使用 phpMyAdmin 或 MySql 命令行查看这些值时,我以以下格式查看它们:

YYYY-MM-DD

但是,当我将这些值检索到我的 Web 应用程序时,它们会以以下格式显示:

YYYY-MM-DD HH:MM (时间具体为12:00)。

为什么会这样?我怎样才能防止这种情况发生?

4

3 回答 3

2

当您在 C# 中存储您的日期字段时,您使用 DateTime 对象。在此对象中,当您未指定时间部分时,将根据 Globalization 放置一个默认值。

您可以在此处研究 DateTime 的工作原理

于 2013-09-01T16:53:21.063 回答
1

您可以在获取数据时将日期转换为您喜欢的格式,使用date_format()

select date_format(datecol, '%Y-%m-%d')

这会将值作为字符串返回。

于 2013-09-01T16:59:17.703 回答
0

您不应该从 mysql 检索该值作为字符串。为什么?因为如果您需要对该值执行任何操作,例如添加一天,那么您将需要DateTime再次将其解析回 a。字符串解析可能很慢,当涉及到日期时,它们很容易出现错误,例如对 mm/dd/yyyy 和 dd/mm/yyyy 格式的误解。

您遇到的问题是 .NET 不仅有一个Date类型。它只有一个DateTime类型。所以加载一个 MySQLDATE类型,将得到一个DateTime时间部分设置为午夜的。

没有直接的问题,除了如何输出结果。如果您只是在.ToString()没有任何参数的情况下调用,或者您隐式地将其用作字符串,那么您将获得包含完整日期和时间的结果。您只需要提供一个参数来指示您想要的格式。

没有任何参数,您将获得通用"G"格式。这在此处的文档中进行了说明。

换句话说:

yourDateTime.ToString() == yourDateTime.ToString("G")

您可以在此处此处阅读所有其他可用格式。

特别是,如果您只想要日期,那么您可能想要这样做:

yourDateTime.ToString("d")

根据您的评论,您应该这样做:

MySQL 查询:

SELECT Gbstartdate FROM TblGbDef

C#:

DateTime gb_start_date = (DateTime) datareader[0];
于 2013-09-02T02:56:50.863 回答