我是MySQL和C#的新手。
我将某些值存储在具有数据类型日期的列中。我不想要时间,只想把日期储存起来。在使用phpMyAdmin或MySql命令行查看这些值时,我看到它们的格式如下:
YYYY MM-DD
但是,当我将这些值检索到我的web应用程序时,它们将以以下格式显示:
YYYY-MM-DD :MM(具体时间为12:00).
这一切为什么要发生?我怎样才能防止这种情况发生呢?
发布于 2013-09-01 16:59:17
在获取数据时,可以使用date_format()将日期转换为您喜欢的格式。
select date_format(datecol, '%Y-%m-%d')这将以字符串的形式返回值。
发布于 2013-09-01 16:53:21
在C#中存储日期字段时,使用DateTime对象。在此对象中,如果不指定时间部分,则默认值将取决于全球化。
您可以研究DateTime如何工作这里
发布于 2013-09-02 02:56:50
您不应该从mysql中以字符串的形式检索值。为什么?因为如果您需要对该值执行任何操作,比如添加一天,那么您将需要再次将其解析为DateTime。字符串解析可能很慢,而且当涉及日期时,它们容易出现错误,例如对mm/dd/yyyy和dd/mm/yyyy格式的错误解释。
您遇到的问题是,.NET不只是一个Date类型。它只有一个DateTime类型。因此,加载一个MySQL DATE类型,将得到一个时间部分设置为午夜的DateTime。
这没有直接的问题,除了如何输出结果。如果您只调用没有任何参数的.ToString(),或者隐式地使用它作为字符串,那么您将得到一个包含完整日期和时间的结果。您只需提供一个参数来指示所需的格式设置。
在没有任何参数的情况下,您将获得通用"G"格式。这在文档这里中得到了解释。
换言之:
yourDateTime.ToString() == yourDateTime.ToString("G")特别是,如果您只想要日期,那么您可能需要这样做:
yourDateTime.ToString("d")根据您的评论,您应该这样做:
MySQL查询:
SELECT Gbstartdate FROM TblGbDefC#:
DateTime gb_start_date = (DateTime) datareader[0];https://stackoverflow.com/questions/18560619
复制相似问题