关于MySQL 的时间相加天数和时间作差的SQL
2016-01-14 19:04
483 查看
今天写了一条相对比较应用比较丰富的Sql语句,特别在这里总结一下关于时间作差和相加、case when等开发常用的用法。
这里用到Date_Add 对一个时间进行天数相加
用下面对两个时间作差,转化成秒,注意是 HzDeadLine-sendTime,即后面减去前面的,Second,这里可以是天,分钟,如果是天(Day)的话,后面的时分秒无效,可以自行测试。
本人一直以为,一个项目,要想后期方便维护,必须有良好认真的注释之外,同时,保持良好的命名习惯和项目目录结构的良好规划,此外,对新增的需求和后续的需求,不能盲目或无条件地加,加功能需考虑到后期的维护和对系统的负担,不能无条件满足客户的要求,注意在操作上规范用户的操作,这些都很重要。
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查看bin日志命令
- How to Set Up Replication--MySQL Concept
- Uniconnection 连 mysql 有时会断线的
- Managing Hierarchical Data in MySQL
- MySQL 编码设置
- MySQL 插入数据时,中文乱码问题的解决
- 热修改mysql数据库pt-online-schema-change 的使用详解
- MYSQL数据库中的枚举类型和集合类型
- myBatis 操作 mysql时,使用 like 关键进行模糊查询的方法
- mysql中的数据同步到elasticsearch
- MySql 创建只读账号
- 【整理】MySQL学习
- MYSQL 研发规范
- 【数据库】Mysql中的触发器
- 【mysql 服务启动失败,报 1067 错误】 的可能原因及解决方案
- MySQL分区性能初探
- mysql中处理逗号存储多个字符串,id,tag
- MySQL存储引擎总结
- MySQL MERGE存储引擎 简介
- 秒杀场景下MySQL的低效