So verwenden Sie die DateDIFF-Funktion in einer MySQL-Tabelle
P粉416996828
P粉416996828 2024-04-01 10:12:54
0
2
440

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粉416996828
P粉416996828

Antworte allen(2)
P粉226642568

我相信我们确实需要 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
;
P粉418854048

我认为是:

SELECT  BookName,IssuedDate,ToBEReturnDate,BookStatus ,
CASE WHEN  GETDATE()
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage