MySQL 常用函数 - 日期函数
目录
当前日期
SELECT CURDATE();
SELECT CURRENT_DATE();
返回当前时间
SELECT CURRENT_TIME();
返回当前日期和时间
SELECT CURRENT_TIMESTAMP();
SELECT LOCALTIME();
SELECT LOCALTIMESTAMP();
SELECT NOW();
返回日期时间的各个部分
返回年份
SELECT YEAR('2020-03-23');
返回天数部分
SELECT DAY('2020-09-14 22:00:15');
返回月份值
SELECT MONTH('2020-08-20 10:20:30');
返回小时值
SELECT HOUR('20:10:40');
返回分钟值
SELECT MINUTE('20:10:40');
返回秒钟值
SELECT SECOND('20:10:40');
返回日期参数所对应的微妙数
SELECT MICROSECOND('2020-08-30 10:20:30.001234');
提取传入表达式的时间部分
SELECT TIME(‘2020-10-20 20:30:40’);
提取字符串中的值
SELECT DATE('2020-10-10');
SELECT DATE('2020-10-10 10:10:10');
计算时间值
计算起始日期 d 加上 n 天的日期
SELECT ADDDATE("2017-06-15", INTERVAL 10 DAY);
SELECT ADDDATE("2017.06.15", INTERVAL 10 DAY);
时间 t 加上 n 秒的时间
SELECT ADDTIME('2020-10-10 10:10:10',6);
两个日期的想个天数
SELECT DATEDIFF('2021-01-01','2020-09-18');
计算起始日期 d 加上一个时间段后的日期,默认是天
SELECT ADDDATE('2020-10-10 10:10:10',5);
SELECT ADDDATE('2020-10-10 10:10:10',INTERVAL 10 MINUTE);
从日期减去指定的时间间隔
SELECT DATE_SUB('2020-10-10 10:10:10',INTERVAL 2 DAY);
日期减去 1 天后的日期
SELECT SUBDATE('2020-01-20 10:10:30',1);
时间减去 5 秒后的时间
SELECT SUBTIME('2020-01-20 10:10:30',5);
计算时间差值
SELECT TIMEDIFF('20:20:50','20:20:20');
按表达式的要求显示日期
SELECT DATE_FORMAT('2020-10-10 10:10:10','%Y-%m-%d %r');
SELECT DATE_FORMAT('2020-10-10 10:10:10','%Y年%m月%d日 %r');
将字符串转变为日期
SELECT STR_TO_DATE("August 10 2017", "%M %d %Y");
返回星期几:Friday
SELECT DAYNAME('2020-09-18');
返回在本月的第几天
SELECT DAYOFMONTH('2020-09-30');
日期 d 今天是星期几,1 星期日,2 星期一,以此类推
SELECT DAYOFWEEK('2020-9-18');
返回本年的第几天
SELECT DAYOFYEAR('2020-09-18');
转换时间
将时间转为时分秒
SELECT SEC_TO_TIME(4000);
将时分秒转为时间
SELECT TIME_TO_SEC('05:30:40');
/**
从日期 d 中获取指定的值,type 指定返回的值。type可取值为:
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
SECOND_MICROSECOND
MINUTE_MICROSECOND
MINUTE_SECOND
HOUR_MICROSECOND
HOUR_SECOND
HOUR_MINUTE
DAY_MICROSECOND
DAY_SECOND
DAY_MINUTE
DAY_HOUR
YEAR_MONTH
**/
SELECT EXTRACT(MINUTE FROM ‘2020-11-12 13:14:15’);
/** 计算从 0000 年 1 月 1 日开始 n 天后的日期 **/
SELECT FROM_DAYS(761090);
/** 返回当前月的最后一天 **/
SELECT LAST_DAY(‘2018-03-10’);
/** 组合时间 **/
SELECT MAKETIME(10,20,30);
/** 返回日期当中的月份名称,如:October **/
SELECT MONTHNAME(‘2020-10-30 10:30:40’);
/** 为 年-月 组合日期添加一个时段 /
SELECT PERIOD_ADD(202004,4);
/ 返回两个时段的月份差值 **/
SELECT PERIOD_DIFF(202004,201908);
/** 返回是第几个季节,返回 1-4 **/
SELECT QUARTER(‘2020-06-08’);
/** 按照表达式要求显示时间 **/
SELECT TIME_FORMAT(‘10:20:30’,’%r’);
/** 单个参数时,函数返回日期或日期时间表达式;有2个参数时,将参数加和 **/
SELECT TIMESTAMP(‘2020-10-09’,‘18:30:23’);
/** 计算日期 d 距离 0000 年 1 月 1 日的天数 **/
SELECT TO_DAYS(‘2020-10-23 20:12:30’);
/** 计算时间是本年的第几个星期 **/
SELECT WEEK(‘2020-09-18 10:23:30’);
SELECT WEEKOFYEAR(‘2020-09-18 10:23:32’);
/** 日期 d 是星期几,0 表示星期一,1 表示星期二 **/
SELECT WEEKDAY(‘2020-09-18’);
/** 返回年份及第几周(0到53),mode 中 0 表示周天,1表示周一,以此类推 **/
SELECT YEARWEEK(‘2020-09-18’,0);
/**************************************************** 高级函数 ****************************************************/
/** 返回2进制编码 **/
SELECT BIN(3);
/** 将字符串转换为二进制字符串 **/
SELECT BINARY ‘Hello’;
/**
CASE 表示函数开始,END 表示函数结束。
如果 1 > 0 成立,则返回 ‘1 比 0 大’, 如果 2 > 0 成立,则返回 2 比 0 大,
当全部不成立则返回 3 比 0 大,而当有一个成立之后,后面的就不执行了。
**/
SELECT case
when 1 > 0
then ‘1 比 0 大’
when 2 > 0
then ‘2 比 0 大’
ELSE ‘3 比 0 大’
END;
/** 字符串日期改成日期 **/
SELECT CAST(‘2020-10-18’ AS DATE);
/** 返回参数中的第一个非空表达式(从左往右) **/
SELECT COALESCE(NULL,NULL,‘我非空’,NULL,NULL);
/** 返回数据库连接数 **/
SELECT CONNECTION_ID();
/** 返回十进制的 4 转为二进制的结果 **/
SELECT CONV(4,10,2);
/** 函数将字符串 s 的字符集变成 cs **/
SELECT CHARSET(‘ABC’);
SELECT CHARSET(CONVERT(‘ABC’ USING GBK));
/** 返回当前用户 **/
SELECT CURRENT_USER();
/** 返回当前数据库名 **/
SELECT DATABASE();
/** 如果 -1>0 正确,返回正确,否则错误**/
SELECT if(-1>0,‘正确’,‘错误’);
/** 第一个不为null,返回第一个参数,否则返回第二个值 **/
SELECT IFNULL(NULL,‘第一个参数为null’);
/** 为 null 返回 1,不为 null返回 0 **/
SELECT ISNULL(‘a’);
SELECT ISNULL(NULL);
/** 返回最近生成的 AUTO_INCREMENT 值 **/
SELECT LAST_INSERT_ID();
/** 比较两个字符串,相等返回 null,不等返回第一个 **/
SELECT NULLIF(20,20);
SELECT NULLIF(12,20);
/** 返回当前用户 **/
SELECT SESSION_USER();
SELECT SYSTEM_USER();
SELECT USER();
/** 返回数据库版本号 **/
SELECT VERSION();
上一篇: npm更换成淘宝镜像源cnpm
下一篇: IPD流程概述