MySql中的日期类型

本文关键字:类型 日期 MySql | 更新日期: 2023-09-27 18:29:53

我是MySQL和C#的新手。

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

YYYY-MM-DD

但是,当我在web应用程序中检索这些值时,它们以以下格式显示:

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

为什么会发生这种情况?我该如何防止这种情况发生?

MySql中的日期类型

在C#中存储日期字段时,使用DateTime对象。在这个对象中,当您没有指定要放置的时间部分时,默认值取决于全球化。

您可以在这里研究DateTime的工作原理

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

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

这将以字符串形式返回值。

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

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

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

在没有任何参数的情况下,您将获得General "G"格式。此处的文档对此进行了解释。

换句话说:

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

你可以在这里和这里阅读所有其他可用的格式。

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

yourDateTime.ToString("d")

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

MySQL查询:

SELECT Gbstartdate FROM TblGbDef

C#:

DateTime gb_start_date = (DateTime) datareader[0];
相关文章: