内置函数
概述
V9.0.4实现以下时间日期函数的兼容:
| 函数类型 | 函数名称 | 说明 |
|---|---|---|
| 时间日期函数 | DAY() | DAYOFMONTH()的同义词 |
| DAYOFMONTH() | 返回月份中的天数(0~31) | |
| DAYOFWEEK() | 返回参数的星期几索引 | |
| DAYOFYEAR() | 返回年份中的天数(1-366) | |
| QUARTER() | 从日期参数中返回季度 | |
| HOUR() | 提取小时 | |
| MICROSECOND() | 返回参数中的微秒数 | |
| MINUTE() | 返回参数中的分钟数 | |
| SECOND() | 返回秒数(0-59) | |
| WEEKDAY() | 返回星期几的索引 | |
| WEEKOFYEAR() | 返回日期的日历周数(1-53) | |
| YEAR() | 返回年份 | |
| CURDATE() | 返回当前日期 | |
| CURRENT_DATE(), CURRENT_DATE | CURDATE()的同义词 | |
| CURTIME() | 返回当前时间 | |
| CURRENT_TIME(), CURRENT_TIME | CURTIME()的同义词 | |
| NOW() | 返回当前日期和时间 | |
| CURRENT_TIMESTAMP | NOW()的同义词 | |
| LOCALTIME | NOW()的同义词 | |
| LOCALTIMESTAMP | NOW()的同义词 | |
| SYSDATE() | 返回函数执行时的时间 | |
| MAKEDATE() | 根据年份和年中的天数创建日期 | |
| MAKETIME() | 根据小时、分钟、秒创建时间 | |
| PERIOD_ADD() | 向年月添加一个时期 | |
| PERIOD_DIFF() | 返回两个时期之间的月份数 | |
| SEC_TO_TIME() | 将秒转换为 ‘hh:mm:ss’ 格式 | |
| SUBTIME() | 从给定的时间或日期中减去指定的时间间隔 | |
| TIMEDIFF() | 计算两个时间之间的差值 | |
| TIME() | 提取传入表达式的时间部分 | |
| TIMESTAMP() | 当只有一个参数时,此函数返回日期或日期时间表达式;当有两个参数时,返回两个参数的和。 | |
| TIMESTAMPADD() | 向日期时间表达式添加一个时间间隔 |
V9.0.5增加以下函数的兼容:
| 函数类型 | 函数名称 | 说明 |
|---|---|---|
| 时间日期函数 | TO_DAYS() | 返回转换为天数的日期参数 |
| TO_SECONDS() | 返回转换为自公元0年以来的秒数的日期或日期时间参数 | |
| UNIX_TIMESTAMP() | 返回Unix时间戳 | |
| UTC_DATE() | 返回当前UTC日期 | |
| UTC_TIME() | 返回当前UTC时间 | |
| UTC_TIMESTAMP() | 返回当前UTC日期和时间 | |
| DAYNAME() | 返回星期几的名称 | |
| MONTHNAME() | 返回月份的名称 | |
| TIME_TO_SEC() | 返回转换为秒数的参数 | |
| MONTH() | 从传入的日期中提取月份 | |
| DATE() | 从日期或日期时间表达式中提取日期部分 | |
| WEEK() | 返回星期数 | |
| YEARWEEK() | 从某个日期中提取出年份和对应的周数 | |
| DATEDIFF() | 计算两个日期之间的差距 | |
| FROM_DAYS() | 将天数转换为日期 | |
| CONVERT_TZ() | 从一个时区转换到另一个时区 | |
| GET_FORMAT() | 返回日期格式字符串 | |
| TIMESTAMPDIFF() | 返回两个日期时间表达式的差异,并使用指定的单位 | |
| STR_TO_DATE() | 将字符串转换为日期 | |
| 字符串函数和操作符 | LOCATE() | 返回子字符串第一次出现的位置 |
| LCASE() | LOWER()的同义词 | |
| UCASE() | UPPER()的同义词 | |
| INSERT() | 在指定位置插入子字符串,直到指定字符数 | |
| BIN() | 返回包含数字二进制表示的字符串 | |
| CHAR() | 返回传入整数的字符 | |
| ELT() | 返回指定索引位置的字符串 | |
| FIELD() | 返回第一个参数在随后的参数中的索引(位置) | |
| FIND_IN_SET() | 返回第一个参数在第二个参数内的索引(位置) | |
| HEX() | 十六进制表示十进制或字符串值 | |
| SPACE() | 返回指定数量空格的字符串 | |
| SOUNDEX() | 返回一个Soundex字符串 | |
| EXPORT_SET() | 返回一个字符串,对于值中每个设置的位,得到一个开字符串,对于每个未设置的位,得到一个关字符串 | |
| ORD() | 返回参数的最左字符的字符代码 | |
| SUBSTRING_INDEX() | 从字符串中提取子字符串,在指定的分隔符的指定次数之前 | |
| FROM_BASE64() | 解码Base64编码的字符串并返回结果 | |
| TO_BASE64() | 返回转换为Base64字符串的参数 | |
| LENGTH() | 返回字符串的字节长度 | |
| BIT_LENGTH() | 返回参数的位长度 | |
| OCTET_LENGTH() | LENGTH()的同义词 | |
| LEFT() | 返回最左边的指定字符数 | |
| RIGHT() | 返回指定的右边字符数 | |
| REPLACE() | 替换指定字符串 | |
| UNHEX() | 返回包含数字十六进制表示的字符串 | |
| WEIGHT_STRING() | 返回字符串的权重字符串 | |
| STRCMP() | 比较两个字符串 | |
| 流控制函数 | IF() | IF/else结构 |
| IFNULL() | NULL IF/else结构 | |
| 比较函数和操作符 | ISNULL() | 测试参数是否为NULL |
| INTERVAL() | 返回小于第一个参数的参数的索引 | |
| 数学函数 | CONV() | 在不同的数字基数之间转换数字 |
| 其他函数 | INET_ATON() | 返回IP地址的数字值 |
| INET_NTOA() | 从数字值返回IP地址 | |
| INET6_ATON() | 返回IPv6地址的数字值 | |
| INET6_NTOA() | 从数字值返回IPv6地址 |
示例
V9.0.4实现的函数:
SELECT DAY('2007-02-03');
SELECT DAYOFMONTH('2007-02-03');
SELECT DAYOFWEEK('2007-02-03');
SELECT DAYOFYEAR('2007-02-03');
SELECT QUARTER('2008-04-01');
SELECT HOUR('10:05:03');
SELECT MICROSECOND('12:00:00.123456');
SELECT MINUTE('2008-02-03 10:05:03');
SELECT SECOND('10:05:03');
SELECT WEEKDAY('2008-02-03 22:23:00');
SELECT WEEKOFYEAR('2008-02-20');
SELECT YEAR('1987-01-01');
SELECT CURDATE();
SELECT CURRENT_DATE();
SELECT CURRENT_DATE;
SELECT CURTIME();
SELECT CURRENT_TIME();
SELECT CURRENT_TIME;
SELECT NOW();
SELECT CURRENT_TIMESTAMP;
SELECT LOCALTIME;
SELECT LOCALTIMESTAMP;
SELECT SYSDATE();
SELECT MAKEDATE(2011,31), MAKEDATE(2011,32);
SELECT MAKETIME(12,15,30);
SELECT PERIOD_ADD(200801,2);
SELECT PERIOD_DIFF(200802,200703);
SELECT SEC_TO_TIME(2378);
SELECT SUBTIME('2007-12-31 23:59:59.999999','1 1:1:1.000002');
SELECT TIMEDIFF('2000:01:01 00:00:00','2000:01:01 00:00:00.000001');
SELECT TIME('2003-12-31 01:02:03');
SELECT TIMESTAMP('2003-12-31 12:00:00','12:00:00');
SELECT TIMESTAMPADD(MINUTE,1,'2003-01-02');
V9.0.5增加的函数:
SELECT TO_DAYS(950501);
SELECT TO_SECONDS(950501);
SELECT UNIX_TIMESTAMP('2025-09-08 08:30:06');
SELECT UTC_DATE(), UTC_DATE() + 0;
SELECT UTC_TIME(), UTC_TIME() + 0;
SELECT UTC_TIMESTAMP(), UTC_TIMESTAMP() + 0;
SELECT DAYNAME('2025-05-12');
SELECT MONTHNAME('2008-02-03');
SELECT TIME_TO_SEC('22:23:00');
SELECT MONTH('2008-02-03');
SELECT DATE('2003-12-31 01:02:03');
SELECT WEEK('2008-02-20',1);
SELECT YEARWEEK('2025-06-01');
SELECT DATEDIFF('2025-10-01 20:09:50','2025-02-09');
SELECT FROM_DAYS(700669);
SELECT CONVERT_TZ('2024-01-01 12:00:00','+00:00','+10:00');
SELECT GET_FORMAT(DATE,'USA');
SELECT TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01');
SELECT STR_TO_DATE('01,5,2013','%d,%m,%Y');
SELECT LOCATE('bar','foobarbar',5);
SELECT LCASE('GOOD');
SELECT UCASE('hello');
SELECT INSERT('Quadratic',3, 4,'What');
SELECT BIN(12);
SELECT CHAR(77,121,83,81,'76');
SELECT ELT(1,'Aa','Bb','Cc','Dd');
SELECT FIELD('Bb','Aa','Bb','Cc','Dd','Ff');
SELECT FIND_IN_SET('b','a,b,c,d');
SELECT HEX(255);
SELECT SPACE(6);
SELECT SOUNDEX('Hello');
SELECT EXPORT_SET(5,'Y','N',',',4);
SELECT ORD('ABAC2');
SELECT SUBSTRING_INDEX('www.mysql.com\',\'.\',2);
SELECT FROM_BASE64('YWJj');
SELECT TO_BASE64('abc');
SELECT LENGTH('text');
SELECT BIT_LENGTH('text');
SELECT OCTET_LENGTH('text');
SELECT LEFT('foobarbar',5);
SELECT RIGHT('foobarbar',4);
SELECT REPLACE('www.mysql.com\',\'w\',\'Ww\‘);
SELECT UNHEX('2567');
SELECT HEX('mysql');
SELECT STRCMP('text','text2');
SELECT IF(1<2,'yes','no');
SELECT IFNULL(NULL,10);
SELECT ISNULL(1+1);
SELECT INTERVAL(10,1,10,100,1000);
SELECT CONV('6E',18,8);
SELECT INET_ATON('10.0.5.9');
SELECT INET_NTOA(167773449);
SELECT HEX(INET6_ATON('fdfe::5a55:caff:fefa:9089'));
SELECT INET6_NTOA(UNHEX('FDFE0000000000005A55CAFFFEFA9089'));