Mysql 函数使用记录(一)——DATEDIFF、CONCAT
2018-06-17 23:37:49来源:未知 阅读 ()
当目前为止呢,个人对Mysql的函数没有进行过统一的学习使用,都是用到了再去学习。而近日开始学习Linux了,所以为了防止这段时期结束后,将此阶段期间遇到的Mysql函数遗忘,开始在此对其做一个简单的记录。
昨天下班前朋友呢让帮忙看一个sql,是关于生日提醒的,实际应用中呢是要实现提前一天提醒用户生日,而sql呢是用来查询后一天要过生日的用户。在她原来的sql中用到了CONCAT、DATEDIFF函数,这两个函数呢我自个儿呢之前是没有用到过,所以在解决完问题之后在此记录一下用法及思路。
首先,来看CONCAT和DATEDIFF函数的定义与用法:
CONCAT() : 用于连接两个或多个字符串。如有任何一个参数为null,则返回值为null。
DATEDIFF():返回两个日期之间的天数。
其次,来看需求:
查询出相对当天,后一天要过生日的用户。
在明确了需求和函数的用法之后我们来看思路:
1、既然是要查后一天要过生日的用户,那我们可以简单看作是查询生日日期比当前日期大一天的用户,那么问题来了,这样的话只能查询到当前年、当前月份、当前日期后一天出生的用户,显然不符合,那再换种思路,假设所有用户都在同一年出生,这样我们获取生日日期比当前日期大一天的用户不就可以了^_^~
2、在1中我们可以看出,这样看起来好像是没什么问题了,但是仔细想想,假如当前日期是12月31号,那后一天(也就是1月1号)过生日的用户要是按照1的思路能查询的到吗?显然不能。那我们再来看12月31号和1月1号,有没有想到跨年呢,没错,就是跨年,既然这样,我们将所有用户生日日期年份替换成当前年跨年后的年份,这样根据日期间天数为1的条件不就可以筛选出12月31号后一天过生日的用户了吗^_^~
最后,我们来看下sql的实现:
1、替换+组合生日日期:
替换生日日期年份为当前年:
CONCAT(YEAR(NOW()),DATE_FORMAT(birthday,'-%m-%d'))
替换生日日期年份为当前年跨年后年份:
CONCAT(YEAR(NOW())+1,DATE_FORMAT(birthday,'-%m-%d'))
2、处理后生日日期与当前日期间天数:
普通:
DATEDIFF(CONCAT(YEAR(NOW()),DATE_FORMAT(birthday,'-%m-%d')),NOW())
跨年:
DATEDIFF(CONCAT(YEAR(NOW())+1,DATE_FORMAT(birthday,'-%m-%d')),NOW())
3.整合,查询当前日期后一天要过生日的用户信息:
SELECT * FROM user WHERE DATEDIFF(CONCAT(YEAR(NOW()),DATE_FORMAT(birthday,'-%m-%d')),NOW()) = 1 OR DATEDIFF(CONCAT(YEAR(NOW())+1,DATE_FORMAT(birthday,'-%m-%d')),NOW()) = 1
最后:
DATEDIFF 函数中两个参数,前一个比后一个大时,值>=0 ,前一个比后一个小时,值<=0
记录完毕!
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:MySQL 报错 1093
下一篇:mysql的基本操作
- MySQL replace函数怎么替换字符串语句 2020-03-09
- PHP访问MySQL查询超时怎么办 2020-03-09
- mysql登录时闪退 2020-02-27
- MySQL出现1067错误号 2020-02-27
- mysql7.x如何单独安装mysql 2020-02-27
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash