關於MySQL 的時間相加天數和時間作差的SQL

2021-07-09 11:19:54 字數 1377 閱讀 8706

今天寫了一條相對比較應用比較豐富的sql語句,特別在這裡總結一下關於時間作差和相加、case when等開發常用的用法。

select    mri.packid,mri.mailid,0,0,0,1, 

(case when mi.productid=2 then

if(timestampdiff(second,mpi.sendtime,mdi.maildeadline)<(60*60*24*5),date_add(mpi.sendtime,interval 5 day ),mdi.maildeadline)

else

date_add(mpi.sendtime,interval mi.delivetime+2 day ) end

)as maildeadline,

(case when mi.productid=2 then

if(timestampdiff(second,mpi.sendtime,mdi.hzdeadline)<(60*60*24*7),date_add(mpi.sendtime,interval 7 day ),mdi.hzdeadline)

when mi.productid<>2 and mi.hzflag=1 then

date_add(mpi.sendtime,interval mi.hztime day )

else null end)

as hzdeadline

from qct_produce.mail_review_info mri,qct_produce.mail_imp mi,qct_produce.mail_pack_info mpi,qct_produce.mail_deliver_info mdi

where mri.mailflag=0 and mri.mailid = mi.mailid and mri.packid = mpi.packid and mri.dlid=mdi.dlid

這裡用到date_add 對乙個時間進行天數相加

用下面對兩個時間作差,轉化成秒,注意是 hzdeadline-sendtime,即後面減去前面的,second,這裡可以是天,分鐘,如果是天(day)的話,後面的時分秒無效,可以自行測試。

timestampdiff(second,mpi.sendtime,mdi.hzdeadline)<(60*60*24*7)
最近,專案已經上線,在執行中,不斷測試並完善,甚是欣慰!

本人一直以為,乙個專案,要想後期方便維護,必須有良好認真的注釋之外,同時,保持良好的命名習慣和專案目錄結構的良好規劃,此外,對新增的需求和後續的需求,不能盲目或無條件地加,加功能需考慮到後期的維護和對系統的負擔,不能無條件滿足客戶的要求,注意在操作上規範使用者的操作,這些都很重要。

mysql 獲取昨天資料 utc時間

yzj邀請昨日資料 select s.id,s.create at,ch.id,ch.code as channel,c.id c.code as custom,so.id,so.code as source from invite ship s left join invite channel c...

php和mysql關於時間的實用函式

獲得n天前的日期 function get minday n return date y m d time 3600 24 n 1 獲取日期的日 a 2014 01 22 a strtotime a 時間轉為時間戳 echo date d a 下個月一號 reslut date date y m 1...

Mysql關於時間的操作

mysql查詢本季度 今天 select from ticket order detail where to days use time to days now 7天 select from ticket order detail where date sub curdate interval 7 ...