函数(function)
NULL函数
IFNULL(arg1,arg2) 如果arg1不是空,返回arg1;否则返回arg2
COALESCE()
NULLIF(arg1,arg2) 如果arg1=arg2返回null;否则返回arg1
IF(test,t,f) 如果text是真,返回t;否则返回f
Ifnull(comm,0) 如果comm不为null则返回comm值;否则返回0.
CASE函数
UCASE(column_name)函数 把字段的值转换为大写。
LCASE(column_name)函数 把字段的值转换为小写。
其他函数
MID(column_name,start[,length])函数 从文本字段中提取字符
MID(City,1,3) 从‘CIty’列提取前3个字符
LEN(column_name)函数 返回文本字段中值的长度
ROUND(column_name,decimals)函数 把数值字段四舍五入为指定的小数位数
ROUND(Price,0) 价格四舍五入为整数
RAND() 取随机浮点数
CONCAT(x,y,z) 将x、y、z连接起来
DATE函数
当我们处理日期时,最难的任务恐怕是确保所插入的日期的格式,与数据库中日期列的格式相匹配。
只要数据包含的只是日期部分,运行查询就不会出问题。但是,如果涉及时间,情况就有点复杂了。
在讨论日期查询的复杂性之前,我们先来看看最重要的内建日期处理函数。
MySQL Date函数
NOW() 返回当前的日期和时间 yyyy-MM-dd HH:mm:ss
CURDATE() 返回当前的日期 yyyy-MM-dd
CURTIME() 返回当前的时间 HH:mm:ss
DATE(date) 提取日期或日期/时间表达式的日期部分 yyyy-MM-dd
YEAR(date) 提取日期或日期/时间表达式的日期部分 yyyy
MONTH(date) 提取日期或日期/时间表达式的日期部分 MM
DATOFMONTH(date) 提取日期或日期/时间表达式的日期部分 dd
EXTRACT(unit FROM date) 返回日期/时间按的单独部分
DATE_ADD(date,INTERVAL expr type) 给日期添加指定的时间间隔
DATE_SUB(date,INTERVAL expr type) 从日期减去指定的时间间隔
DATEDIFF(date1,date2) 返回两个日期之间的天数(注释:只有值得日期部分参与计算)
DATE_FORMAT(date,format) 用不同的格式显示日期/时间
TIMESTAMPDIFF(unit,date1,date2) 返回两个日期之间的unit(YEAR\MONTH\DAY\...)
例:SELECT OrderId,DATE_ADD(OrderDate,INTERVAL 2 DAY) AS OrderPayDate FROM Orders
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
Format表
%a 缩写星期名
%b 缩写月名
%c 月,数值
%D 带有英文前缀的月中的天
%d 月的天,数值(00-31)
%e 月的天,数值(0-31)
%f 微秒
%H 小时 (00-23)
%h 小时 (01-12)
%I 小时 (01-12)
%i 分钟,数值(00-59)
%j 年的天 (001-366)
%k 小时 (0-23)
%l 小时 (1-12)
%M 月名
%m 月,数值(00-12)
%p AM 或 PM
%r 时间,12-小时(hh:mm:ss AM 或 PM)
%S 秒(00-59)
%s 秒(00-59)
%T 时间, 24-小时 (hh:mm:ss)
%U 周 (00-53) 星期日是一周的第一天
%u 周 (00-53) 星期一是一周的第一天
%V 周 (01-53) 星期日是一周的第一天,与 %X 使用
%v 周 (01-53) 星期一是一周的第一天,与 %x 使用
%W 星期名
%w 周的天 (0=星期日, 6=星期六)
%X 年,其中的星期日是周的第一天,4 位,与 %V 使用
%x 年,其中的星期一是周的第一天,4 位,与 %v 使用
%Y 年,4 位
%y 年,2 位