首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL日期格式问题

问MySQL日期格式问题
EN

Stack Overflow用户
提问于 2010-08-19 21:30:44
回答 3查看 1.5K关注 0票数 0

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

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-19 22:04:13

如果要在select语句中转换它,请使用following

代码语言:javascript
复制
SELECT DATE_FORMAT(date, '%m/%d/%y')
FROM   TableName

如果你想用代码来做这件事。

代码语言:javascript
复制
DateTime dt = Convert.ToDateTime(mySqlCommand.ExecuteScalar());
string strDateTime = dt.ToString("MM/dd/yy");

希望这能有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2010-08-19 21:36:07

如果想要获取日期时间字段的特定格式,可以这样做:

代码语言:javascript
复制
select 
    concat(
        month(date_field),
        "/",
        day(date_field),
        "/",
        year(date_field)
    ) 
as 
    formatted_date 
from 
    myTable;
order by
    date_field asc;

但是,我不确定这是否适用于其他字段类型-尽管可能很好,所以可以尝试一下。

票数 0
EN

Stack Overflow用户

发布于 2010-08-19 21:41:21

等一下。是要将其转换为mm/dd/yy格式,还是要按日期/时间排序?这两个不利于对方。

排序

如果该列已经是MySQL中的datetime列,则可以正常对其进行排序:

代码语言:javascript
复制
var query = db.MyTable.Where(...)
    .OrderBy(row => row.SentDate);

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

代码语言:javascript
复制
var query = db.MyTable.Where(...)
    .AsEnumerable()
    .Select(row => new { row, Sent = DateTime.Parse(row.SentDate) })
    .OrderBy(inf => inf.Sent);

对AsEnumerable的调用导致检索数据,因此DateTime解析和排序在C#中进行,而不是在DB中。

转换为mm/dd/yy

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

代码语言:javascript
复制
datetime.ToString("MM/dd/yy")

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

代码语言:javascript
复制
datetime.ToString("d", CultureInfo.GetCultureInfo("en-US"))

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

一旦您将DateTime转换为这样的字符串,排序就没有意义了,因为您将按月份的第一个数字对其进行排序-没有人会发现这很有用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3522270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档