Maison > Questions et réponses > le corps du texte
J'ai un ensemble de données dans mon système de gestion de bibliothèque et j'utilise la requête ci-dessous pour obtenir uniquement des champs spécifiques.
select BookName,IssuedDate,ToBEReturnDate,BookStatus from issuedbooks; RESULT: Book Name Issued Date Return Date ReceivedDate Book Status Book 1 5/1/2022 5/14/2022 Not Received Book 2 5/2/2022 5/15/2022 Not Received Book 3 5/3/2022 5/16/2022 Not Received Book 4 5/4/2022 5/17/2022 5/24/2022 Received Book 5 5/5/2022 5/18/2022 Not Received Book 6 5/5/2022 6/10/2022 Not Received
Maintenant, s'il n'y a pas de valeur de date reçue, j'ai besoin de la fonction DATEDIFF pour obtenir la différence de date entre la date d'aujourd'hui et ReturnDate. De plus, je n'ai pas besoin de valeurs négatives. Par exemple, la valeur de if currdate()<ToBEReturnDate
devrait être nulle (ce qui signifie que l'utilisateur a plus de temps pour rendre le livre), sinon il devrait y avoir une différence.
Le résultat final devrait ressembler à ceci,
Book Name IssuedDate ReturnDate ReceivedDate BookStatus DateExpire Book 1 5/1/2022 5/14/2022 Not Received 15 Book 2 5/2/2022 5/15/2022 Not Received 14 Book 3 5/3/2022 5/16/2022 Not Received 13 Book 4 5/4/2022 5/17/2022 5/24/2022 Received 7 Book 5 5/5/2022 5/18/2022 Not Received 11 Book 6 5/5/2022 6/10/2022 Not Received 0
Existe-t-il un moyen d'utiliser la fonction dateiff en fonction de mes besoins ?
P粉2266425682024-04-02 09:09:35
Je crois que nous en avons besoin receiveddate
列,该列在您的原始查询中缺失。此外,作为 date
日期类型,receiveddate
La colonne n'autorise pas une chaîne vide comme valeur, nous devons la stocker comme null mais pouvons l'afficher plus tard comme une chaîne vide. C'est le code que j'ai écrit et testé dans Workbench.
select BookName as 'Book Name',IssuedDate,ToBEReturnDate as ReturnDate, ifnull(receiveddate,'') as ReceivedDate , BookStatus, case when receiveddate is null then if(datediff(current_date(),tobereturndate)>0, datediff(current_date(),tobereturndate), 0) else if(datediff(receiveddate,tobereturndate)>0, datediff(receiveddate,tobereturndate), 0) end as DateExpire from issuedbooks ;
P粉4188540482024-04-02 00:25:28
Je pense que c'est :
SELECT BookName,IssuedDate,ToBEReturnDate,BookStatus , CASE WHEN GETDATE() répondre0