如何转换06 Aug 2010 03:41:44 GMT + 00:00到mm / dd / yy时间在mysql中?
我基本上想要对这个SentDate列进行排序(数据是从外部源填充的)。 我也可以在c#中这样做。
答案 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上。
以您所描述的格式将DateTime
转换为string
的一种方法是明确使用.ToString
:
datetime.ToString("MM/dd/yy")
另一种是使用美国 - 美国文化:
datetime.ToString("d", CultureInfo.GetCultureInfo("en-US"))
然而,后者似乎使用了一位数的月份。
一旦你将DateTime
转换为这样的字符串,对它进行排序是没有意义的,因为你会按照当月的第一个数字对它进行排序 - 没有人会发现它有用。