/* */
/*返回日期date是星期几(1=星期天,2=星期一,……7=星期六,odbc标准)
dayofweek(date) */
select dayofweek('2018-01-12');
/* 返回日期date是星期几(0=星期一,1=星期二,……6= 星期天)。
weekday(date) */
select weekday('2018-01-12');
select weekday('1997-11-05');
/* 返回date是一月中的第几日(在1到31范围内)
dayofmonth(date) */
select dayofmonth('2018-01-12');
/* 返回date是一年中的第几日(在1到366范围内)
dayofyear(date) */
select dayofyear('2018-01-12');
/* 返回date中的月份数值 (1-12)
month(date) */
select month('2018-01-12');
/* 返回date是星期几(按英文名返回)
dayname(date)
*/
select dayname("1998-02-05");
/* 返回date是几月(按英文名返回)
monthname(date) */
select monthname("1998-02-05");
/* 返回date是一年的第几个季度
quarter(date) */
select quarter('1988-02-01');
/* 返回date是一年的第几周(first默认值0,first取值1表示周一是周的开始,0从周日开始,默认从周日开始)
week(date,first) */
select week('2018-01-12');
select week('2018-01-12',0);
select week('2018-01-12',1);
/* 返回date的年份(范围在1000到9999)
year(date) */
select year('98-02-03');
/* 返回time的小时数(范围是0到23,time格式(10:00:00),填时间格式(yyyy-mm-dd))返回0 ,不计算年月日
hour(time)
*/
select hour('2017-1-1 10:00');
/* 返回time的分钟数(范围是0到59)
minute(time) */
select minute('98-02-03 10:05:03');
/*返回time的秒数(范围是0到59)
second(time) */
select second('10:05:03');
/* 增加n个月到时期p并返回(p的格式yymm或yyyymm) 第一种调用方式正确
period_add(p,n) */
select period_add(201701,20);
select period_add(20170102,20);
select period_add('2017-1-1',20);
/* 返回在时期p1和p2之间月数(p1和p2的格式yymm或yyyymm)
period_diff(p1,p2) */
select period_diff(9802,199903);
select period_diff(9802,199703);
/* 时间加减
date_add(date,interval expr type) 时间加
date_sub(date,interval expr type) 时间减
adddate(date,interval expr type) 添加时间
subdate(date,interval expr type) 减去时间
对日期时间进行加减法运算
(adddate()和subdate()是date_add()和date_sub()的同义词,也
可以用运算符+和-而不是函数
date是一个datetime或date值,expr对date进行加减法的一个表
达式字符串type指明表达式expr应该如何被解释
[type值 含义 期望的expr格式]:
second 秒 seconds
minute 分钟 minutes
hour 时间 hours
day 天 days
month 月 months
year 年 years
minute_second 分钟和秒 "minutes:seconds"
hour_minute 小时和分钟 "hours:minutes"
day_hour 天和小时 "days hours"
year_month 年和月 "years-months"
hour_second 小时, 分钟, "hours:minutes:seconds"
day_minute 天, 小时, 分钟 "days hours:minutes"
day_second 天, 小时, 分钟, 秒 "days
hours:minutes:seconds"
expr中允许任何标点做分隔符,如果所有是date值时结果是一个
date值,否则结果是一个datetime值)
如果type关键词不完整,则mysql从右端取值,day_second因为缺
少小时分钟等于minute_second)
如果增加month、year_month或year,天数大于结果月份的最大天
数则使用最大天数) */
select "1997-12-31 23:59:59" - interval 1 second;
select interval 1 day + "1997-12-31";
select "1998-01-01" - interval 1 second;
select date_add("1997-12-31 23:59:59",interval 1 hour);
select date_add("1997-12-31 23:59:59",interval 1 day);
select date_add("1997-12-31 23:59:59",interval 1 minute_second);
select date_sub("1998-01-01 00:00:00",interval "11:1:1" day_second);
select date_sub("1998-01-01 00:00:00", interval "-110" day_hour);
select date_sub("1998-01-02", interval 31 day);
select extract(year from "1999-07-02");
select extract(year_month from "1999-07-0201:02:03");
select extract(day_minute from "1999-07-0201:02:03");
/* 返回日期date是西元0年至今多少天(不计算1582年以前)
to_days(date) */
select to_days(19971007);
select to_days('1997-10-07');
/* 给出西元0年至今多少天返回date值(不计算1582年以前)
from_days(n) */
select from_days(729669);
/* 根据format字符串格式化date值
date_format(date,format)
(在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 位
*/
select date_format('2018-01-12 22:23:00','%w %m %Y');
select date_format('1997-10-04 22:23:00','%h:%i:%s');
select date_format('1997-10-04 22:23:00','%d %y %a%d %m %b %j');
select date_format('1997-10-04 22:23:00','%h %k %i%r %t %s %w');
/*理小时、分钟和秒格式化time值
&time_format(time,format)
和date_format()类似,但time_format只处理小时、分钟和秒(其
余符号产生一个null值或0) */
select time_format('2018-01-12 22:23:00','%H');
/* 以'yyyy-mm-dd'或yyyymmdd格式返回当前日期值(根据返回值所
处上下文是字符串或数字)
curdate() current_date()
*/
select curdate();
select curdate() + 0;
/* 以'hh:mm:ss'或hhmmss格式返回当前时间值(根据返回值所处上下文是字符串或数字)
curtime() current_time() */
select curtime();
select curtime() + 0;
/* 以'yyyy-mm-dd hh:mm:ss'或yyyymmddhhmmss格式返回当前日期时间(根据返回值所处上下文是字符串或数字)
now()
sysdate()
current_timestamp()
*/
select now();
select now() + 0;
select sysdate();
select sysdate() + 0;
select current_timestamp();
select current_timestamp() + 0;
/* 返回一个unix时间戳(从'1970-01-01 00:00:00'gmt开始的秒数,date默认值为当前时间)
unix_timestamp()
unix_timestamp(date)
*/
select unix_timestamp();
select unix_timestamp('1997-10-04 22:23:00');
/* 以'yyyy-mm-dd hh:mm:ss'或yyyymmddhhmmss格式返回时间戳的值(根据返回值所处上下文是字符串或数字)
from_unixtime(unix_timestamp) */
select from_unixtime(875996580);
select from_unixtime(875996580) + 0;
/* 以format字符串格式返回时间戳的值
from_unixtime(unix_timestamp,format) */
select from_unixtime(unix_timestamp(),'%Y %d %m %h:%i:%s %x');
/* 以'hh:mm:ss'或hhmmss格式返回秒数转成的time值(根据返回值所处上下文是字符串或数字)
sec_to_time(seconds) */
select sec_to_time(2378);
select sec_to_time(2378) + 0;
/* 返回time值有多少秒
time_to_sec(time)
*/
select time_to_sec('22:23:00');
select time_to_sec('00:39:38');
/*转换函数
二进制,同带binary前缀的效果 : BINARY
字符型,可带参数 : CHAR(N) n代表长度
日期 : DATE
时间: TIME
日期时间型 : DATETIME
浮点数 : DECIMAL
整数 : SIGNED
无符号整数 : UNSIGNED
cast
用法:cast(字段 as 数据类型) [当然是否可以成功转换,还要看数据类型强制转化时注意的问题]*/
select cast(3.12 as unsigned) ;
select cast(3.12 as char(2)) ;
/*转换函数
convert:
二进制,同带binary前缀的效果 : BINARY
字符型,可带参数 : CHAR(N) n代表长度
日期 : DATE
时间: TIME
日期时间型 : DATETIME
浮点数 : DECIMAL
整数 : SIGNED
无符号整数 : UNSIGNED
用法:convert(字段,数据类型)*/
select convert(21.0021 ,CHAR(6) ) ;