7
votes

Sélectionnez le premier jour du mois précédent dans (DB2) SQL

Je dois vérifier si une date donnée est le mois précédent pour une requête mensuelle. Je peux obtenir xxx

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?


0 commentaires

6 Réponses :


0
votes

Je crois que ce qui suit fonctionnera pour vous. XXX


5 commentaires

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é.



11
votes

premier jour de cette année: xxx pré>


premier jour de ce mois de ce mois: p> xxx pré>


premier jour de Le mois dernier: P>

THIS_MONTH(CURRENT DATE) - 1 DAY


1 commentaires

Nice, ce sont assez indolor. Merci.



1
votes

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)


1 commentaires

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



12
votes

Premier jour du mois en cours:

CURRENT_DATE - (DAY(CURRENT_DATE)-1) DAYS - 1 MONTH 


0 commentaires

1
votes

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');  


0 commentaires

4
votes

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)


0 commentaires