Mon but est d'interroger les éléments par leur id_utilisateur, l'année de création et le mois créé. J'utilise sqlite3 en développement et postresql en production sur Heroku.Ruby strftime '% -m' ne fonctionne pas dans la requête
Je veux faire quelque chose comme ceci:
items.where("user_id = '?' AND strftime('%Y', created_at) = '?' AND strftime('%-m', created_at) = '?' ", 6, 2015, 3)
Mais il ne renvoie aucun enregistrement.
Cela fonctionne:
items.where("user_id = '?' AND strftime('%Y', created_at) = '?' ", 6, 2015)
Mais ce ne renvoie aucun enregistrement:
items.where("user_id = '?' AND strftime('%-m', created_at) = '?' ", 6, 3)
Suis-je utiliser le format '%-m'
mal?
N'utilisez pas de guillemets pour '?'. Il peut être excusable avec SQLite3; pas en général. Qu'est-ce que le format '% -m'? Je ne l'ai jamais vu et je ne le trouve pas dans [docs] (http://www.sqlite.org/lang_datefunc.html). (Note: vous écrivez SQL, donc c'est SQLite3 'strftime', pas Ruby' strftime'.) – Amadan
Notez que 'strftime' est un SQLite-ism pour contourner le manque de types de temps natifs, cela ne fonctionnera pas à tout avec PostgreSQL. Faites-vous plaisir et installez PostgreSQL localement pour pouvoir développer, tester et déployer avec la même base de données. –
Y at-il une bonne raison pour laquelle vous n'utilisez pas postgresql en développement? Sûrement un problème comme celui-ci souligne pourquoi il peut être vraiment utile d'utiliser la même technologie dans tous vos environnements? – Jon