MySQL日期格式问题

时间:2010-08-19 13:30:44

标签: c# .net mysql datetime

如何转换06 Aug 2010 03:41:44 GMT + 00:00到mm / dd / yy时间在mysql中?

我基本上想要对这个SentDate列进行排序(数据是从外部源填充的)。 我也可以在c#中这样做。

3 个答案:

答案 0 :(得分:1)

如果您想在select语句中进行转换,请使用following

SELECT DATE_FORMAT(date, '%m/%d/%y')
FROM   TableName

如果你想在代码中这样做。

DateTime dt = Convert.ToDateTime(mySqlCommand.ExecuteScalar());
string strDateTime = dt.ToString("MM/dd/yy");

希望这有帮助。

答案 1 :(得分:0)

如果您想获得日期时间字段的特定格式,可以执行以下操作:

select 
    concat(
        month(date_field),
        "/",
        day(date_field),
        "/",
        year(date_field)
    ) 
as 
    formatted_date 
from 
    myTable;
order by
    date_field asc;

但是,我不确定这适用于其他字段类型 - 可能会这样做,所以可以尝试。

答案 2 :(得分:0)

坚持下去。是否要将其转换为mm / dd / yy格式,还是要按日期/时间对其进行排序?这两者不利于彼此。

排序

如果该列已经是MySQL中的datetime列,那么您可以正常排序:

var query = db.MyTable.Where(...)
    .OrderBy(row => row.SentDate);

如果列是字符串列(varchar),那么当您从数据库中读取数据时,需要将数据转换为DateTime对象,并且然后在C#中对其进行排序。例如:

var query = db.MyTable.Where(...)
    .AsEnumerable()
    .Select(row => new { row, Sent = DateTime.Parse(row.SentDate) })
    .OrderBy(inf => inf.Sent);

AsEnumerable的调用导致数据被检索,因此DateTime解析和排序发生在C#land而不是DB上。

转换为mm / dd / yy

以您所描述的格式将DateTime转换为string的一种方法是明确使用.ToString

datetime.ToString("MM/dd/yy")

另一种是使用美国 - 美国文化:

datetime.ToString("d", CultureInfo.GetCultureInfo("en-US"))

然而,后者似乎使用了一位数的月份。

一旦你将DateTime转换为这样的字符串,对它进行排序是没有意义的,因为你会按照当月的第一个数字对它进行排序 - 没有人会发现它有用。