suchen

Heim  >  Fragen und Antworten  >  Hauptteil

So verwenden Sie die DateDIFF-Funktion in einer MySQL-Tabelle

Ich habe einen Datensatz in meinem Bibliotheksverwaltungssystem und verwende die folgende Abfrage, um nur bestimmte Felder abzurufen.

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

Wenn nun kein empfangener Datumswert vorhanden ist, benötige ich die Funktion DATEDIFF, um die Datumsdifferenz zwischen dem heutigen Datum und dem ReturnDate zu ermitteln. Außerdem brauche ich keine negativen Werte. Beispielsweise sollte der Wert von if currdate()<ToBEReturnDate Null sein (was bedeutet, dass der Benutzer mehr Zeit hat, das Buch zurückzugeben), andernfalls sollte es einen Unterschied geben.

Die endgültige Ausgabe sollte so aussehen,

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

Gibt es eine Möglichkeit, die dateiff-Funktion entsprechend meinen Anforderungen zu verwenden?

P粉416996828P粉416996828244 Tage vor448

Antworte allen(2)Ich werde antworten

  • P粉226642568

    P粉2266425682024-04-02 09:09:35

    我相信我们确实需要 receiveddate 列,该列在您的原始查询中缺失。此外,作为 date 日期类型,receiveddate 列不允许使用空字符串作为其值,我们需要将其存储为 null,但稍后可以显示为空字符串。这是我在工作台中编写和测试的代码。

    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
    ;

    Antwort
    0
  • P粉418854048

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

    我认为是:

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

    Antwort
    0
  • StornierenAntwort