当目前为止呢,个人对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

记录完毕!

Mysql 函数使用记录(一)——DATEDIFF、CONCAT的更多相关文章

  1. Mysql 函数使用记录(二)——ELT()、FIELD()、IFNULL()

    昨天在对一业务修改的过程中想到用DECODE()来实现效果,转眼发现目前使用的是Mysql库,经过查阅,最终用ELT().FIELD().IFNULL()函数来实现需求.现对其做一个记录. 语法: E ...

  2. Mysql 函数使用记录(三)——UNIX_TIMESTAMP() 、UNIX_TIMESTAMP(date)

    参考资料:https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_unix-timestamp UN ...

  3. 随记MySQL的时间差函数(TIMESTAMPDIFF、DATEDIFF)、日期转换计算函数(date_add、day、date_format、str_to_date)

    时间差函数(TIMESTAMPDIFF.DATEDIFF) 需要用MySQL计算时间差,使用TIMESTAMPDIFF.DATEDIFF,记录一下实验结果 select datediff(now(), ...

  4. mysql函数concat与group_concat使用说明

    mysql函数concat与group_concat使用说明concat()函数<pre>mysql> select concat(',',name,',') from `user` ...

  5. mysql一些函数的记录

    今天瞎搞还是弄不出报名程序,偶尔记住了几个mysql函数 mysql_connect()连接数据库 mysql_error()输出文本报错 mysql_select_db()函数设置活动的MySQL  ...

  6. mysql函数大全

    对于针对字符串位置的操作,第一个位置被标记为1. ASCII(str) 返回字符串str的最左面字符的ASCII代码值.如果str是空字符串,返回0.如果str是NULL,返回NULL. mysql& ...

  7. MySQL 函数大全

    mysql函数大全 对于针对字符串位置的操作,第一个位置被标记为1. ASCII(str) 返回字符串str的最左面字符的ASCII代码值.如果str是空字符串,返回0.如果str是NULL,返回NU ...

  8. mysql函数全解析

    本文摘自:http://www.cnblogs.com/cocos/archive/2011/05/06/2039469.html mysql函数大全 对于针对字符串位置的操作,第一个位置被标记为1. ...

  9. 三十四、MySQL 函数

    MySQL 函数 MySQL 有很多内置的函数,以下列出了这些函数的说明. MySQL 字符串函数 函数 描述 实例 ASCII(s) 返回字符串 s 的第一个字符的 ASCII 码. 返回 Cust ...

随机推荐

  1. cookie 和 session 的一些事 中间件

    cookie 和 session cookie 1. 保存在浏览器上一组组键值对,服务器让浏览器进行设置. 2. 为什么要用cookie? HTTP协议是无状态.使用cookie保存状态. 3. dj ...

  2. MyEclipse中项目运行时发生了Tomcat报错:[java.lang.OutOfMemoryError: PermGen space]

    Tomcat内存溢出,异常信息如下: 十一月 26, 2017 1:52:26 下午 org.apache.catalina.core.ContainerBase$ContainerBackgroun ...

  3. 注册页面的JSON响应方式详细分析(与前端页面交互方式之一)

    控制器层 需求分析: 访问路径:`/user/reg.do` //自己根据功能需求设定的请求参数:`username=xx&password=xx&&phone=xx& ...

  4. mybatis之关联映射

    ###mybatis使用之一对一关联映射 1)分析并画ER图.(特别是一对一.一对多.多对多的情况) 2)启动终端数据库,并建库建表,在表中插入值和字段,并查看结果.(后期把navicat用上) 3) ...

  5. An Example of How Oracle Works

    Oracle是怎么工作的,摘自Oracle 9i的官方文档 The following example describes the most basic level of operations tha ...

  6. SSL/TLS代理(termination proxy)

    A TLS termination proxy (or SSL termination proxy) is a proxy server that is used by an institution ...

  7. Mac下Homebrew的安装与使用

    Homebrew简介,安装与使用 简介 Homebrew 官方网站 Homebrew是一个包管理器,用于安装Apple没有预装但你需要的UNIX工具.(比如著名的wget). Homebrew会将软件 ...

  8. 【题解】 Luogu P4145 上帝造题的七分钟2 / 花神游历各国

    原题传送门 这道题实际和GSS4是一样的,只是输入方式有点区别 GSS4传送门 这道题暴力就能过qaq(这里暴力指线段树) 数据比较水 开方修改在线段树中枚举叶节点sqrt 查询区间和线段树基本操作 ...

  9. 最菜的小鸟(mkdir -pv)

    命令 mkdir -pv /usr/local/modules/{openjdk,nginx,tomcat,mariadb}/{manifests,files,templates,lib,tests, ...

  10. Android 4.4 根据uri获取路径的方法

    当我们选择图片以后,返回的是Uri,此时我们要把路径存储到数据库,必须将其转换成String类型. URI:  //content://com.android.providers.media.docu ...