2010-04-20 6 views
1

J'ai un sql pour obtenir le formulaire de données mysql leur I utilisé dateformat pour convertir la date de format requis Voici le sqlComment obtenir le format de la date dans le jeu de résultats?

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 

Quand je lance ce sql directement dans une base MySQL, il fonctionne très bien, SENT_DATE vient comme (19- Avril 2010). Quand j'excute cela en rubis, en jeu de résultats est le SENT_DATE magasins comme (20 Tue Apr 00:00:00 UTC 2010)

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

puts affiche déclaration "Tue Apr 20 00:00:00 UTC 2010"

comment obtenir le même format de date dans le résultat mysql et le jeu de résultats ruby.

Merci

+0

'DATE_FORMAT (m.sent_date, '% d-% b-% Y') date_formatted' ou une commande par va échouer –

Répondre

4

Vous Froget utiliser « AS » dans votre requête de sorte qu'il prend datatype par défaut défini dans votre base de données.

Le fonctionnement suivant devrait fonctionner. Cheer

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

ÉDITÉ pour "AS mot-clé est facultative"

je vérifie dans mon propre code & je suis venu à la conclusion suivante

quand j'écris quelque chose comme follwing
nom de colonne 1] est la même et w/o "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] nom de la colonne est le même et "AS"

@check = DATE_FORMAT(m.sent_date, '%d-%b-%Y') AS sent_date 
    @check[0].sent_date >> 22-Mar-2010 

3] nom de colonne est différente et w/0 "AS"

@check = DATE_FORMAT(m.sent_date, '%d-%b-%Y') date 
    @check[0].date >> 22-Mar-2010 
+0

comme mot-clé est facultatif –

+0

@Col. Sharpnel: - s'il vous plaît vérifier ma réponse éditée je voudrais tout commentaire à ce sujet. – Salil

+0

Merci de donner la solution. Pourriez-vous expliquer pourquoi cela arrive pour le même alias? – Prasanna

0

Il n'est pas la chaîne, mais l'objet de la date, si vous utilisez un certain type de colonne de date pour stocker ce champ dans votre base de données. Vous pouvez utiliser la méthode strftime pour la formation de sortie. Pour le format 19-Apr-2010 vous pouvez utiliser cette

puts messages[0]['sent_date'].strftime("%d-%b-%Y") 
Questions connexes