Mysql 函数使用记录(一)——DATEDIFF、CONCAT

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

记录完毕!

时间: 2024-10-07 04:50:45

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

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

昨天在对一业务修改的过程中想到用DECODE()来实现效果,转眼发现目前使用的是Mysql库,经过查阅,最终用ELT().FIELD().IFNULL()函数来实现需求.现对其做一个记录. 语法: ELT(n,str1,str2,str3,...) :如果n=1,则返回str1,如果n=2,则返回str2,依次类推.如果n小于1或大于参数个数,返回NULL.ELT()是FIELD()的功能补充函数. mysql> SELECT ELT(3,'hello','halo','test','world

mysql函数大全

mysql函数大全 对于针对字符串位置的操作,第一个位置被标记为1. ASCII(str) 返回字符串str的最左面字符的ASCII代码值.如果str是空字符串,返回0.如果str是NULL,返回NULL. mysql> select ASCII('2');    -> 50mysql> select ASCII(2);    -> 50mysql> select ASCII('dx');    -> 100也可参见ORD()函数. ORD(str) 如果字符串str最

mysql函数全解析

本文摘自:http://www.cnblogs.com/cocos/archive/2011/05/06/2039469.html mysql函数大全 对于针对字符串位置的操作,第一个位置被标记为1.  ASCII(str)  返回字符串str的最左面字符的ASCII代码值.如果str是空字符串,返回0.如果str是NULL,返回NULL.  mysql> select ASCII('2');     -> 50 mysql> select ASCII(2);     -> 50

Mysql函数(全)

帮助文档下载链接---http://download.csdn.net/detail/pozmckaoddb/8999497 一. 控制流程函数 a)  CASE WHEN THEN 函数 语法: CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result --] [ELSE result ] END CASE WHEN [condition] THEN result [WHEN[condition]

【转】mysql函数

MySQL函数 MySQL数据库提供了很多函数包括: 数学函数: 字符串函数: 日期和时间函数: 条件判断函数: 系统信息函数: 加密函数: 格式化函数: 一.数学函数 数学函数主要用于处理数字,包括整型.浮点数等. 函数 作用 ABS(x) 返回x的绝对值 SELECT ABS(-1) -- 返回1 CEIL(x),CEILING(x) 返回大于或等于x的最小整数 SELECT CEIL(1.5) -- 返回2 FLOOR(x) 返回小于或等于x的最大整数 SELECT FLOOR(1.5) 

mysql 函数库

函数库 mysql存储过程基本函数包括:字符串类型,数值类型,日期类型 一.字符串类 CHARSET(str) //返回字串字符集 CONCAT (string2 [,… ]) //连接字串 INSTR (string ,substring ) //返回substring首次在string中出现的位置,不存在返回0 LCASE (string2 ) //转换成小写 LEFT (string2 ,length ) //从string2中的左边起取length个字符 LENGTH (string )

MySQL函数大全及使用方法

mysql函数大全 一.字符串函数 CONCAT(s1,s2...,sn)返回来自于参数连结的字符串.如果任何参数是NULL,返回NULL.可以有超过2个的参数.一个数字参数被变换为等价的字符串形式. CONCAT_WS(sep,s1,s2...,sn)将s1,s2...,sn连接成字符串,并用sep字符间隔 QUOTE(str) 用反斜杠转义str中的单引号 STRCMP(s1,s2)比较字符串s1和s2 LTRIM(str) 返回删除了其前置空格字符的字符串str. 该函数对多字节是可靠的.

MySQL学习笔记10(MySQL函数)

MySQL学习笔记10 MySQL函数 MySQL数据库中提供了很丰富的函数.MySQL函数包括数学函数.字符串函数.日期和时间函数.条件判断函数.系统信息函数.加密函数.格式化函数等.通过这些函数,可以简化用户的操作.SELECT语句及其条件表达式都可以使用这些函数.同时,INSERT.UPDATE.DELECT语句及其条件表达式也可以使用这些函数. 1:数学函数 数学函数是M有SQL中常用的一类函数.主要用于处理数字,包括整型.浮点数等.数学函数包括绝对值函数.正弦函数.余弦函数.获取随机数

mysql函数

一.字符串函数 (1).计算字符串个数 语法:char_length(string) 例子:select char_length(user_name) from gonda; (2).计算字节长度 语法:length(string) 例子:select length(name) from student; (3).合并字符串函数 语法:concat(s1,s2) 默认不定义分割符号 举例:select concat(user_id,user_name) from gonda; 语法:concat