Calculer le nombre de jours entre deux dates dans DB2?
J'ai besoin d'obtenir la différence de jours entre deux dates dans DB2. J'ai essayé un couple de requêtes différentes, mais rien ne semble fonctionner. Donc, fondamentalement, ce que j'ai besoin d'obtenir quelque chose comme cela.
SELECT DAYS (CURRENT DATE) - DAYS (DATE(CHDLM)) FROM CHCART00 WHERE CHSTAT = '05';
Je sais que si je supprime CHDLM et spécifier une date comme "2012-02-20' il fonctionne, mais j'ai besoin d'être en mesure de l'exécuter à l'encontre de ce champ dans la table. J'ai aussi essayer cette requête qui m'a été donnée par un ami, ne fonctionne pas non plus.
select days (current date) - days (date(select concat(concat(concat(concat(left(a2.chdlm,4),'-'),substr(a2.chdlm,4,2)),'-'),right(a2.chdlm,2))) from sysibm.sysdummy1 a1, chcart00 a2 where chstat = '05';
Merci de toute aide sera grandement apprécier. Grâce
Ressemble à il ya un problème avec votre colonne type de données...
OriginalL'auteur jorame | 2012-03-02
Vous devez vous connecter pour publier un commentaire.
Je pense que @Shiva est sur la bonne voie (à l'aide de
DAYS()
), mais imbriquéesCONCAT()
s sont de me faire de vertige. Voici mon point de vue.Oh, il n'y a aucun point dans le référencement
sysdummy1
, que vous avez besoin de tirer à partir d'un tableau, indépendamment.Aussi, ne pas utiliser l'implicite de la syntaxe de jointure, il est considéré comme un SQL Anti-modèle.
Je be enveloppé la date de conversion dans un CTE pour des raisons de lisibilité ici, mais rien ne vous empêche de le faire en ligne.
Désolé, encore une question, que faire si j'ai besoin de sélectionner plusieurs champs de la CHCART00 table, comment puis-je le faire?
Jamais l'esprit, je le comprendre. Merci
OriginalL'auteur Clockwork-Muse
J'ai été confrontée au même problème dans le Derby IBM DB2 base de données intégré dans java application de bureau, et après une journée de recherche j'ai enfin trouvé comment on fait :
pour plus d'informations consulter ce site
day
retourne le jour du mois de terrain) à l'Aide dedays
devraient travailler pour le cas général, comme elle renvoie le nombre de jours depuis l'époque.OriginalL'auteur E_X
Il semble comme une accolade fermante manquante à
,right(a2.chdlm,2)))) from sysibm.sysdummy1 a1,
Afin que votre Requête sera
OriginalL'auteur Siva Charan
Ne serait-il pas simplement être:
Qui doit retourner le nombre de jours entre les deux dates, si je comprends comment la date de l'arithmétique travaille dans DB2 correctement.
Si CHDLM n'est pas une date, vous devrez le convertir en un. Selon IBM, la fonction DATE() ne serait pas suffisante pour le format aaaammjj, mais il pourrait fonctionner si vous pouvez mettre en forme comme ceci: aaaa-mm-jj.
Unfortuanately, les résultats de ces opérations est un durée indéterminée (ie. 2 mois, 3 jours), même si le format de départ est valide. L'OP a demandé en particulier que le nombre de jours.
Ah, toutes mes excuses, il convient de JOURS(CURRENT_DATE) - JOURS(CHDLM)
OriginalL'auteur David Faber
---------- EDIT PAR galador
MODIFIER
Comme il a été souligné par les X-Zero, cette fonction ne retourne qu'une estimation. Ce qui est vrai. Pour des résultats précis, je voudrais utiliser ce qui suit pour obtenir la différence de jours entre deux dates a et b:
J'ai ajouté dans une requête qui je pense devrait vous obtenir ce que vous êtes désireux (en supposant que
CHDLM
est une date ou timestamp type, ou d'une chaîne formatée).CHDLM est formaté comme aaaammjj, pensez-vous que cette requête va travailler avec qui?
Encore une chose, la DB est DB2
Unfortuanately, cette fonction retourne un devis seulement. Entre autres choses, il suppose qu'il y a seulement 30 jours dans un mois...
OriginalL'auteur Isaac