Je dois vérifier si une date donnée est le mois précédent pour une requête mensuelle. Je peux obtenir pour comparer la date sélectionnée avec, mais je ne peux pas supposer que la date actuelle sera le premier jour de chaque mois exactement. Y a-t-il une manière intégrée pour obtenir le premier jour du mois sans extraire l'année et le mois et le coller ensemble? P> P>
6 Réponses :
Je crois que ce qui suit fonctionnera pour vous.
Je ne vois pas cette fonction répertoriée pour DB2 pour les plates-formes Linux, UNIX et Windows. Il est probablement disponible uniquement pour le mainframe DB2.
Ma faute. strictement z / os. Il ne cesse jamais de m'étonner comment une entreprise peut libérer un seul produit et ne pas avoir de fonctionnalité aussi universelle que possible entre les plates-formes. Je ne peux pas imaginer qu'il y a une seule raison pour laquelle cela ne fonctionnerait pas partout. En dehors de cela, je ne connais pas une autre solution autre que ce que vous avez affiché ci-dessous ou en cas de défaite la date actuelle dans les morceaux de cordes mois, jour, année, en modifiant le mois et la journée, puis reconstruisant la nouvelle date.
Dommage, cela a l'air parfait quand je l'ai regardé.
Je t'entends. Il existe des fonctionnalités dans DB2 Z / OS que les personnes LUW américaines obtiennent à peine à peine dans le DB2 9.7 et d'autres choses qui ne sont nulles de près d'être portées. Cela dit, IBM fait beaucoup de progrès réconciliant SQL et des fonctionnalités entre Mainframe DB2 et DB2 LUW (ce qui est parfois appelé de manière dérisive par les corbeaux de mainframe «Little» DB2). Séances de la conférence et présentations de groupe d'utilisateurs par des haut-parleurs de DB2 bien connus tels que Craig Mullins soulignent l'ensemble de SQL croissant qui fonctionne de manière identique dans les deux produits DB2. Ce n'est toujours pas parfait, mais j'ai vu des progrès significatifs.
Audience qui me rend heureux. Actuellement, je travaille avec le système de gestion d'actifs Maximo d'IBM et IBM a été assez moche avec elle. J'ai l'impression que cela s'appuie principalement sur les personnes qui travaillaient pour la société IBM l'ont acquise. C'est un produit conçu par des personnes qui ne voient pas de bases de données comme rien de plus que (efficacement) une série de fichiers plats. Et leur soutien est misérable. Si cela se plié dans le soutien grand public d'IBM, j'aurai peut-être changé.
premier jour de cette année: premier jour de ce mois de ce mois: p> premier jour de Le mois dernier: P>
THIS_MONTH(CURRENT DATE) - 1 DAY
Nice, ce sont assez indolor. Merci.
Afin de la peau avec plus d'informations. La solution ci-dessus est parfaite si vous voulez le premier jour du mois, dites que vous voulez le dernier jour du mois, ou dans mon cas, je veux le dernier jour du prochain trimestre.
d'en haut je faisais p >
date('0001-01-31') + year(date(prevQdate))years - 1 year + **(month(prevQdate) + 2)** months)
Le moyen le plus fiable de produire le dernier jour d'un mois est de construire une expression qui produit le premier jour du mois après cela, puis soustrait un jour. Dernier jour du prochain trimestre, c'est par exemple la date ('0001-01-01') + année (date actuelle) Années - 1 an + ((Quarter (date actuelle) +1) * 3) mois - 1 jour
Premier jour du mois en cours:
CURRENT_DATE - (DAY(CURRENT_DATE)-1) DAYS - 1 MONTH
LUW 9.7 (et je pense z / OS) Méthodes à l'aide de fonctions intégrées.
Dernier jour du mois en cours: P>
LAST_DAY(CURRENT DATE - 1 MONTH) + 1 DAY or (LUW) TRUNCATE(CURRENT DATE, 'MONTH');
Voici des extraits de mon triche de calcul de My DB2 SQL Mois:
Début du mois en cours: P>
LAST_DAY(CURRENT DATE + 1 MONTHS)