Как получить формат даты в наборе результатов? - PullRequest
1 голос
/ 20 апреля 2010

У меня есть sql, чтобы получить форму данных mysql, я использовал dateformat, чтобы преобразовать требуемый формат даты Вот 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

Когда я запускаю этот sql напрямую в mysql, он работает нормально, sent_date появляется как (19-Apr-2010). Когда я извиняюсь за это в ruby, в результирующем наборе send_date сохраняется как (вт 20 апреля 00:00:00 UTC 2010)

messages = Message.find_by_sql(sql)
puts messages[0]['sent_date']

печатает выписку «Вторник, 20 апреля, 00:00:00 UTC 2010»

как получить одинаковый формат даты в результатах mysql и ruby.

Спасибо

Ответы [ 2 ]

4 голосов
/ 20 апреля 2010

Вы забыли использовать «AS» в своем запросе, поэтому он принимает тип данных по умолчанию, установленный в вашей базе данных.

Следующее должно работать. Приветствия в

DATE_FORMAT(m.sent_date, '%d-%b-%Y') AS sent_date

РЕДАКТИРОВАНИЕ для "AS ключевое слово необязательно"

Я проверяю свой код и пришел к следующему выводу

когда я пишу что-то вроде следующего:
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] имя столбца другое и с 0 "AS"

   @check = DATE_FORMAT(m.sent_date, '%d-%b-%Y') date
   @check[0].date >>  22-Mar-2010
0 голосов
/ 20 апреля 2010

Это не строка, а объект даты, если вы используете какой-либо тип столбца даты для хранения этого поля в вашей базе данных. Вы можете использовать strftime метод для форматирования вывода. Для формата 19 апреля 2010 года вы можете использовать это

puts messages[0]['sent_date'].strftime("%d-%b-%Y")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...