今天写了一条相对比较应用比较丰富的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