cari

Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk menggunakan fungsi DateDIFF dalam jadual mysql

Saya mempunyai set data dalam sistem pengurusan perpustakaan saya dan saya menggunakan pertanyaan di bawah untuk mendapatkan medan tertentu sahaja.

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

Kini, jika tiada nilai tarikh diterima, saya perlukan fungsi DATEDIFF untuk mendapatkan perbezaan tarikh antara tarikh hari ini dan ReturnDate. Juga, saya tidak memerlukan nilai negatif. Contohnya nilai if currdate()<ToBEReturnDate hendaklah sifar (bermaksud pengguna mempunyai lebih masa untuk memulangkan buku), jika tidak perlu ada perbezaan.

Keluaran akhir sepatutnya kelihatan seperti ini,

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

Adakah ada cara untuk menggunakan fungsi datediff mengikut keperluan saya?

P粉416996828P粉416996828277 hari yang lalu485

membalas semua(2)saya akan balas

  • P粉226642568

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

    Saya percaya kita memerlukan receiveddate 列,该列在您的原始查询中缺失。此外,作为 date 日期类型,receiveddate Lajur tidak membenarkan rentetan kosong sebagai nilainya, kita perlu menyimpannya sebagai nol tetapi kemudiannya boleh memaparkannya sebagai rentetan kosong. Ini adalah kod yang saya tulis dan uji di meja kerja.

    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
    ;

    balas
    0
  • P粉418854048

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

    Saya rasa ia ialah:

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

    balas
    0
  • Batalbalas