Maison  >  Questions et réponses  >  le corps du texte

Comment utiliser la fonction DateDIFF dans la table MySQL

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粉416996828P粉416996828187 Il y a quelques jours362

répondre à tous(2)je répondrai

  • P粉226642568

    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
    ;

    répondre
    0
  • P粉418854048

    P粉4188540482024-04-02 00:25:28

    Je pense que c'est :

    SELECT  BookName,IssuedDate,ToBEReturnDate,BookStatus ,
    CASE WHEN  GETDATE()

    répondre
    0
  • Annulerrépondre