如何在结果集中获取日期格式?
问题描述:
我有一个SQL来获取数据形式的MySQL的我用的日期格式转换日期格式要求 这里是SQL如何在结果集中获取日期格式?
SELECT
m.id,
m.subject,
m.body,
m.read,
m.hide,
m.thread_id,
DATE_FORMAT(m.sent_date, '%d-%b-%Y') sent_date,
u.username to_name
FROM
messages m,
users u
WHERE
u.school_id = m.school_id AND
u.id = m.to_user_id AND
m.school_id = 18 AND
m.user_id = 53 AND
m.status = 'sent'
ORDER BY m.sent_date DESC
当我直接在mysql的运行这个SQL它工作正常,sent_date当属(19- APR-2010)。当我EXCUTE这在Ruby中,在结果集的sent_date是专卖店为(星期二4月20日00:00:00 UTC 2010)
messages = Message.find_by_sql(sql)
puts messages[0]['sent_date']
把语句打印 “周二4月20日00:00:00 UTC 2010”
如何在mysql结果和ruby结果集中得到相同的日期格式。
感谢
答
您Froget使用“AS”在您的查询,以便它正在采取默认的数据类型在数据库中设置。
以下应该工作。陈绮贞的
DATE_FORMAT(m.sent_date, '%d-%b-%Y') AS sent_date
编辑的“AS关键字是可选的”
我在我自己的代码&检查我来到了以下结论
时,我喜欢写东西follwing
1]列名是相同的并且没有“AS”
@check = DATE_FORMAT(m.sent_date, '%d-%b-%Y') sent_date
@check[0].sent_date >> Mon, 22 Mar 2010 00:00:00 UTC +00:00
2]列名称与“AS”相同
@check = DATE_FORMAT(m.sent_date, '%d-%b-%Y') AS sent_date
@check[0].sent_date >> 22-Mar-2010
3]列名是不同的,并且W/0 “AS”
@check = DATE_FORMAT(m.sent_date, '%d-%b-%Y') date
@check[0].date >> 22-Mar-2010
答
这不是字符串,但日期对象,如果你使用一些日期列类型在数据库中存储这个领域。您可以使用strftime方法进行输出格式化。对于19-APR-2010格式,你可以使用这个
puts messages[0]['sent_date'].strftime("%d-%b-%Y")
'DATE_FORMAT(m.sent_date, '%D-%B-%Y')date_formatted'或订单通过将失败 – 2010-04-20 05:40:24