2017-06-11 2 views
0

J'ai une table ayant 26 colonnes dont les 3 premières colonnes sont jour, mois, année. Et le reste des colonnes ayant des informations que je dois montrer. Maintenant je dois aller chercher des disques selon le dernier jour des années. J'ai essayé d'écrire du code.Sélectionnez les enregistrements en fonction du dernier jour de l'année

select * from subscription_stats where year * 10000 + month * 100 + day = LAST_DAY(CONCAT(year,'-',month,'-',day)) 

Mais cela va aller chercher des documents de dernier jour de chaque mois et je veux dernier jour de years.And aussi, Quand je n'avez pas le dernier jour réel dans les dossiers, alors ce code ne fonctionnera pas. Donc, au lieu de LAST_DAY, je veux des fonctionnalités comme MAX date dans ce mois. Comment puis-je mettre en œuvre cette fonctionnalité.

+0

Si vous voulez que le dernier jour de l'année, alors pourquoi ne pas vous venez de Décembre coder en dur, ou ai-je oublié quelque chose? –

+0

Date de stockage en tant qu'entité unique – Strawberry

+0

Je peux avoir de nombreux enregistrements de sorte qu'il doit être dynamique. C'est pourquoi je ne peux pas le coder en dur – karan

Répondre

1

Est-ce ce que vous cherchez?

select * 
from subscription_stats 
where month = 12 and day = 31; 

Cela renvoie les lignes pour le 31 décembre.

Si vous ne disposez pas des dossiers pour tous les jours et que vous voulez le dernier jour dans les données:

select ss.* 
from subscription_stats ss 
where (ss.month, ss.day) = (select ss2.month, ss2.day 
          subscription_stats ss2 
          where ss2.year = ss.year 
          order by ss2.month desc, ss2.day desc 
          );