【发布时间】:2011-04-01 03:19:45
【问题描述】:
如何在 mysql 中将 2010 年 8 月 6 日 03:41:44 GMT+00:00 转换为 mm/dd/yy 时间?
我基本上想对这个 SentDate 列进行排序(数据是从外部来源填充的)。 我也可以在 c# 中执行此操作。
【问题讨论】:
-
将这些日期存储为
DATETIME类型,您的生活会更轻松。
如何在 mysql 中将 2010 年 8 月 6 日 03:41:44 GMT+00:00 转换为 mm/dd/yy 时间?
我基本上想对这个 SentDate 列进行排序(数据是从外部来源填充的)。 我也可以在 c# 中执行此操作。
【问题讨论】:
DATETIME 类型,您的生活会更轻松。
如果你想在你的选择语句中转换它,使用following:
SELECT DATE_FORMAT(date, '%m/%d/%y')
FROM TableName
如果你想在代码中做到这一点。
DateTime dt = Convert.ToDateTime(mySqlCommand.ExecuteScalar());
string strDateTime = dt.ToString("MM/dd/yy");
希望这会有所帮助。
【讨论】:
等一下。您想将其转换为 mm/dd/yy 格式,还是按日期/时间对其进行排序?两者互不相让。
如果该列在MySQL中已经是datetime列,则可以正常排序:
var query = db.MyTable.Where(...)
.OrderBy(row => row.SentDate);
如果该列是 string 列 (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# 中,而不是在 DB 中。
以您描述的格式将DateTime 转换为string 的一种方法是明确使用.ToString:
datetime.ToString("MM/dd/yy")
另一个是利用美式文化:
datetime.ToString("d", CultureInfo.GetCultureInfo("en-US"))
但是,后者似乎使用个位数的月份。
一旦您将 DateTime 转换为这样的字符串,对其进行排序就没有意义了,因为您将按月份的第一个数字对其进行排序——没有人会发现这很有用。
【讨论】:
如果您想为您的日期时间字段获取特定格式,您可以执行以下操作:
select
concat(
month(date_field),
"/",
day(date_field),
"/",
year(date_field)
)
as
formatted_date
from
myTable;
order by
date_field asc;
但是,我不确定这是否适用于其他字段类型 - 不过可能会很好,所以可以尝试。
【讨论】: