0
votes

Obtenir des données basées sur l'année et le mois

J'ai une table avec quelques données: mois_number (int), année (int).

Je veux obtenir des données basées sur 2 ans et 2 mois xxx

Mais je n'obtiens que des données pour un mois 'mai' de 2014 à 2018, mais l'idée est d'obtenir des données de mai 2014 ---> mai 2018

pouvez-vous m'aider s'il vous plaît? < / p>


2 commentaires

Quel SGBD. MySQL ou MS SQL Server?


@jarlh mysql ....


4 Réponses :


7
votes

Vous voulez seulement comparer des mois pour la première et la dernière année: xxx pré>

Alternativement: p> xxx pré>

ou, non pris en charge par MySQL: P>

WHERE (tt.year, tt.month_number) >= (2014,5) AND (tt.year, tt.month_number) <= (2018,5)


4 commentaires

Mate de typage rapide.


Le dernier filtre aboutira à un erreur comme vous attendez. Je voulais essayer cela parce que je n'ai jamais vu la syntaxe utilisée avant (mon) SQL,


@RAYMONDNIJLAND, j'ai supprimé la clause Where et j'ai trouvé votre requête correcte!


Eh bien, j'ai enlevé le commentaire parce que je pensais où (tt.year, tt.month)> = (2014,5) et (tt.year, tt.month) <= (2018,5) générerait des résultats non valides..well il est en effet N'a pas et je n'ai pas désactivé ' t validez les résultats avant, je pense avoir besoin de caféine mal ..



0
votes

Je pense que ce dont vous avez besoin est la suivante:

SELECT
  tt.year AS raw_annee,
  tt.month AS raw_mois,
  tt.product AS raw_produit,
  tt.quantity_product AS tonnes_prod,
  tt.quantity_n AS raw_tonnes_N,
  tt.quantity_p AS raw_tonnes_P,
  tt.quantity_k AS raw_tonnes_K
FROM test_test as tt    
  WHERE (tt.year > 2014 AND tt.year < 2018) OR  (tt.year = 2014 AND tt.month_number >= 5) OR  (tt.year = 2018 AND tt.month_number <= 5)
  ORDER BY tt.year desc, tt.month_number desc;


0 commentaires

0
votes

Autre moyen avec la date de construction:

WHERE STR_TO_DATE(CONCAT(tt.year,'-',tt.month_number,'-',01), '%Y-%m-%d')  >= '01-05-2014' AND  STR_TO_DATE(CONCAT(tt.year,'-',tt.month_number,'-',01), '%Y-%m-%d') <= '01-05-2018'


0 commentaires

0
votes

Vous pouvez toujours faire la comparaison comme une date: xxx

Si vous devez faire des comparaisons de date, je vous recommande de stocker les valeurs comme dates.


0 commentaires