文章目录
MySQL函数
DATE_ADD函数
-
DATE_ADD() 函数向日期添加指定的时间间隔。
-
·
DATE_ADD(date,INTERVAL expr type)
-
date 参数是合法的日期表达式。
-
expr 参数是您希望添加的时间间隔。
-
type常见的值为HOUR,DAY,WEEK,MONTH,YEAR
-
向 “OrderDate” 添加 45 天
SELECT OrderId,DATE_ADD(OrderDate,INTERVAL 45 DAY) AS OrderPayDate
FROM Orders
DATE_SUB() 函数
- DATE_SUB() 函数从日期减去指定的时间间隔。
DATE_SUB(date,INTERVAL expr type)·
- 和DATE_ADD函数参数一致
- 向 “OrderDate” 减去 5 天
SELECT OrderId,DATE_SUB(OrderDate,INTERVAL 5 DAY) AS SubtractDate
FROM Orders
DATEDIFF() 函数
- DATEDIFF() 函数返回两个日期之间的天数。
DATEDIFF(date1,date2)
- date1 和 date2 参数是合法的日期或日期/时间表达式。
- 只有值的日期部分参与计算。
SELECT DATEDIFF('2008-11-30','2008-11-29') AS DiffDate
结果是1
SELECT DATEDIFF('2008-11-29','2008-11-30') AS DiffDate
结果是-1
DATE_FORMAT() 函数
- DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。
DATE_FORMAT(date,format)
- date 参数是合法的日期。format 规定日期/时间的输出格式。
format常见的值
- %c 表示月,数值
- %H 小时(00-23)
- %h 小时(01-12)
- %i 分钟,数值(00-59)
- %k 小时(0-23)
- %S 秒(00-59)
NOW() 函数
-
NOW() 返回当前的日期和时间。
-
SELECT NOW(),CURDATE(),CURTIME()
-
创建带有日期时间列(OrderDate)的 “Orders” 表:
CREATE TABLE Orders
(
OrderId int NOT NULL,
ProductName varchar(50) NOT NULL,
OrderDate datetime NOT NULL DEFAULT NOW(),
PRIMARY KEY (OrderId)
)
- OrderDate 列规定 NOW() 作为默认值。作为结果,向表中插入行时,当前日期和时间自动插入列中。
- 在 “Orders” 表中插入一条记录:
INSERT INTO Orders (ProductName) VALUES ('Jarlsberg Cheese')
将会默认插入带有时间的数据
CURDATE() 函数
-
CURDATE() 返回当前的日期。
-
CURDATE()
-
SELECT NOW(),CURDATE(),CURTIME()
创建带有日期时间列(OrderDate)的 “Orders” 表:
CREATE TABLE Orders
(
OrderId int NOT NULL,
ProductName varchar(50) NOT NULL,
OrderDate datetime NOT NULL DEFAULT CURDATE(),
PRIMARY KEY (OrderId)
)
- OrderDate 列规定 CURDATE() 作为默认值。作为结果,当向表中插入行时,当前日期和时间自动插入列中。
- 在 “Orders” 表中插入一条记录:
INSERT INTO Orders (ProductName) VALUES ('Jarlsberg Cheese')
会默认插入带有时间的数据
CURTIME() 函数
- CURTIME() 返回当前的时间。
SELECT NOW(),CURDATE(),CURTIME()
DATE()函数
- DATE() 函数提取日期或日期/时间表达式的日期部分。
DATE(date)
;date 参数是合法的日期表达式。
SELECT ProductName, DATE(OrderDate) AS OrderDate
FROM Orders
WHERE OrderId=1
EXTRACT() 函数
- EXTRACT() 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。
EXTRACT(unit FROM date)
- date是合法的日期表达式: YEAR,MONTH,DAY,WEEK,HOUR,MINUTE
字符串连接函数
CONCAT(str1,str2,…)
返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。- 如果所有参数均为非二进制字符串,则结果为非二进制字符串。
- 如果自变量中含有任一二进制字符串,则结果为一个二进制字符串。
- 一个数字参数被转化为与之相等的二进制字符串格式;若要避免这种情况,可使用显式类型 cast:
SELECT CONCAT(CAST(int_col AS CHAR), char_col)
- concat函数可以连接一个或者多个字符串:
select concat('11','22','33');
- MySQL的concat函数在连接字符串的时候,只要其中一个是NULL,那么将返回NULL
mysql> select concat('11','22',null);
+------------------------+
| concat('11','22',null) |
+------------------------+
| NULL |
+------------------------+
1 row in set (0.00 sec)
字符串截取函数
从左开始截取字符串
- left(str, length) left(被截取字段,截取长度)
select left(content,200) as abstract from my_content_t
从右开始截取字符串
- right(str, length) right(被截取字段,截取长度)
- select right(content,200) as abstract from my_content_t
**截取字符串 **
- substring(str, pos) :substring(被截取字段,从第几位开始截取)
- substring(str, pos, length) :substring(被截取字段,从第几位开始截取,截取长度)
select substring(content,5) as abstract from my_content_t
select substring(content,5,200) as abstract from my_content_t
- 如果位数是负数 如-5 则是从后倒数位数,到字符串结束或截取的长度)
**按关键字截取字符串 **
- substring_index(str,delim,count) :substring_index(被截取字段,分隔符,关键字出现的次数)
select substring_index("ryxryx","r",2) as abstract from wiki_user
substr()函数
- 截取字符串:substr(string string,num start,num length);
- select substr(参数1,参数2,参数3) from 表名
- string为字符串;start为起始位置;length为长度。
- mysql中的start是从1开始的。
查出kename字段中第一次出现.之前的字符串
select kename,substr(kename,1,locate('.',kename)) as subkename from web_dev_api where 1;
MySQL导出数据
- 可以使用SELECT…INTO OUTFILE语句来简单的导出数据到文本文件上。
- 使用 SELECT … INTO OUTFILE 语句导出数据
mysql> SELECT * FROM tutorials_tbl
-> INTO OUTFILE '/tmp/tutorials.txt';
- 可以通过命令选项来设置数据输出的指定格式,以下实例为导出 CSV 格式
mysql> SELECT * FROM passwd INTO OUTFILE '/tmp/tutorials.txt'
-> FIELDS TERMINATED BY ',' ENCLOSED BY '"'
-> LINES TERMINATED BY '\r\n';
SELECT … INTO OUTFILE 语句有以下属性:
- 为了将一个数据库的数据写入一个文件,使用SELECT … INTO OUTFILE,为了将文件读回数据库,使用LOAD DATA INFILE。
- SELECT…INTO OUTFILE 'file_name’形式的SELECT可以把被选择的行写入一个文件中。该文件被创建到服务器主机上,因此必须拥有FILE权限,才能使用此语法。
- 输出不能是一个已存在的文件。防止文件数据被篡改。
- 需要有一个登陆服务器的账号来检索文件。否则 SELECT … INTO OUTFILE 不会起任何作用。
- 在UNIX中,该文件被创建后是可读的,权限由MySQL服务器所拥有。虽然可以读取该文件,但可能无法将其删除。
导出表作为原始数据
- mysqldump是MySQL用于转存储数据库的实用程序。它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等。
- 使用mysqldump导出数据需要使用 --tab 选项来指定导出文件指定的目录,该目标必须是可写的
- 将数据表 tutorials_tbl 导出到 /tmp 目录中:
$ mysqldump -u root -p --no-create-info \
--tab=/tmp mytest tutorials_tbl