MySql中的时间和日期函数

来源:互联网 发布:淘宝店铺认证后怎么办 编辑:程序博客网 时间:2024/03/29 02:52
DAYOFWEEK(date):
返回日期date是星期几(1=星期天, 2=星期一, ......, 7=星期六)
如: SELECT DAYOFWEEK("2014-01-05");

WEEKDAY(date):
返回日期date是星期几(0=星期一, 1=星期二, ......, 6=星期天)
如:SELECT WEEKDAY("2014/01/22");  =>  2

DAYOFMONTH(date):
返回date是一个月中的第几日(返回值:1~31)
如:SELECT DAYSOFMONTH("2014.01.22")  =>  22

DAYOFYEAR(date):
返回date是一年中的第几日(返回值:1~366)
如:SELECT DAYOFYEAR("2014-01-22");  =>  22

MONTH(date):
返回date中的月份数值(返回值:1~12)
如:SELECT MONTH("2014-01-11");  =>  1

DAYNAME(date):
按英文名返回date是星期几
如:SELECT DAYNAME("2014-01-22");  =>  Wednesday

MONTHNAME(date):
按英文名返回date是几月份
如:SELECT MONTHNAME("2014-01-22");  =>  January

QUARTER(date):
返回date是一年的第几个季度
如:SELECT QUARTER("2014-01-23");  =>  1

WEEK(date,first):
返回date是一年的第几周(frist默认值0,first取值1表示周一是一周的开始,0表示从周日开始)
如:SELECT WEEK("2014-01-23", 0);  =>  3
   SELECT WEEK("2014-01-23", 1);  =>  4

YEAR(date):
返回date的年份
如: SELECT YEAR("2014-01-23");  =>  2014

HOUR(time):
返回time的小时数(0~23)
如: SELECT HOUR("10:06:07");  =>  10

MINUTE(time):
返回time的分钟数(0~59)
如: SELECT MINUTE("2014-01-23 14:12:42");  =>  12

SECEND(time):
返回time的秒数(0~59)
如: SELECT SECOND("10:13:12");  =>  12

PERIOD_ADD(P, N):
增加N个月到日期P并返回(P的格式YYMM或YYYYMM)
如: SELECT PERIOD_ADD(201401, 1);  =>  201402

PERIOD_DIFF(P1, P2):
返回在时期P1和P2之间的月数(P1和P2的格式YYMM或YYYYMM)
如: SELECT PERIOD_DIFF(201408, 201401);  =>  7

日期和时间的加减法运算:
DATE_ADD(date, INTERVAL expr type)
DATE_SUB(date, INTERVAL expr type)
ADDDATE(date, INTERVAL expr type)
SUBDATE(date INTERVAL expr type)

关于expr和type的关系:
typeexprSECONDSECONDSMINUTE MINUTESHOURHOURSDAY DAYSMONTH MONTHSYEARYERASMINUTE_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"如:SELECT '2014-01-23 23:59:59' + INTERVAL 1 SECOND;  =>  2014-01-24 00:00:00
SELECT '2014-01-23' - INTERVAL 1 SECOND;  =>  2014-01-22 23:59:59
SELECT DATE_ADD("2014-01-23 23:59:59", INTERVAL 1 SECOND);  =>  2014-01-24 00:00:00
SELECT DATE_ADD("2014-01-23 23:59:59", INTERVAL 1 DAY);  =>  2014-01-24 23:59:59
SELECT DATE_ADD("2014-01-23 16:00:00", INTERVAL "1:1" MINUTE_SECOND);  =>  2014-01-23 16:01:01
SELECT DATE_SUB("2014-01-23 16:00:00", INTERVAL "1 1:1:1" DAY_SECOND);  =>  2014-01-22 14:58:59
SELECT DATE_ADD("2014-01-23 16:00:00", INTERVAL "-1 10" DAY_HOUR);  =>  2014-01-22 06:00:00 
SELECT DATE_SUB("2014-01-23", INTERVAL 31 DAY);  =>  2013-12-23 
SELECT EXTRACT(YEAR FROM "2014-01-23");  =>  2014
SELECT EXTRACT(YEAR_MONTH FROM "2014-01-23 01:02:03");  =>  201401

TO_DAYS(date):
返回日期date是西元0年至今多少天(不计算1582年以前)
如:SELECT TO_DAYS("2014-01-23");  =>  735621 

FROM_DAYS(N):
西元0年至今N天的日期
如: SELECT FROM_DAYS(735621);  =>  2014-01-23 

DATE_FORMAT(date, format):
根据format字符串格式化date值
format字符串中可用标识符:
%M 月名字(January……December) 
%W 星期名字(Sunday……Saturday) 
%D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。) 
%Y 年, 数字, 4 位 
%y 年, 数字, 2 位 
%a 缩写的星期名字(Sun……Sat) 
%d 月份中的天数, 数字(00……31) 
%e 月份中的天数, 数字(0……31) 
%m 月, 数字(01……12) 
%c 月, 数字(1……12) 
%b 缩写的月份名字(Jan……Dec) 
%j 一年中的天数(001……366) 
%H 小时(00……23) 
%k 小时(0……23) 
%h 小时(01……12) 
%I 小时(01……12) 
%l 小时(1……12) 
%i 分钟, 数字(00……59) 
%r 时间,12 小时(hh:mm:ss [AP]M) 
%T 时间,24 小时(hh:mm:ss) 
%S 秒(00……59) 
%s 秒(00……59) 
%p AM或PM 
%w 一个星期中的天数(0=Sunday ……6=Saturday ) 
%U 星期(0……52), 这里星期天是星期的第一天 
%u 星期(0……52), 这里星期一是星期的第一天 
%% 字符%
如:SELECT DATE_FORMAT('2014-01-23 20:56:09', '%W %M %Y');  =>  Thursday January 2014    
SELECT DATE_FORMAT('2014-01-23 20:56:09', '%H:%i:%s');  =>  20:56:09 

CURDATE():
CURRENT_DATE():

返回当前日期
如: SELECT CURDATE();  =>  2014-01-23
SELECT CUR_DATE();  =>  2014-01-23
SELECT CURDATE()+0;  =>  20140123

CURTIME():
CURRENT_TIME():

返回当前时间
如: SELECT CURTIME();  =>  21:04:04
SELECT CURRENT_TIME();  =>  21:05:25
SELECT CURTIME() + 0;  =>  210606.000000

NOW():
SYSDATE():
CURRENT_TIMESTAMP():

返回当前日期和时间:
如: SELECT NOW();  =>  2014-01-23 21:07:04
SELECT SYSDATE();  =>  2014-01-23 21:07:04;
SELECT CURRENT_TIMESTAMP();  =>  2014-01-23 21:07:04
SELECT NOW()+0;  =>  20140123211516.000000

UNIX_TIMESTAMP():
UNIX_TIMESTAMP(date):

返回一个Unix时间戳(从'1970-01-01 00:00:00'GMT开始的秒数,date默认值为当前时间)
如:SELECT UNIX_TIMESTAMP();  =>  1390483015

FROM_UNIXTIME(unix_timestamp):
以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回时间戳的值(根据返回值所处上下文是字符串或数字) 
如: SELECT FROM_UNIXTIME(1390483015);  =>  2014-01-23 21:16:55
SELECT FROM_UNIXTIME(1390483015)+0;  =>  20140123211655.000000

FROM_UNIXTIME(unix_timestamp, format):
以format字符串格式返回时间戳的值
如:SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(), '%Y %D %M %h:%i:%s %x');  =>  2014 23rd January 09:21:56 2014


SEC_TO_TIME(seconds):
以'HH:MM:SS'或HHMMSS格式返回秒数转成的TIME值(根据返回值所处上下文是字符串或数字) 
如: SELECT SEC_TO_TIME(3900);  =>  01:05:00
SELECT SEC_TO_TIME(3900)+0;  =>  10500.000000

TIME_TO_SEC(time):
返回time值有多少秒
如:SELECT TIME_TO_SEC('01:05:00');  =>  3900




0 0