您的位置:首页 > 数据库 > MySQL

MySql中的时间和日期函数

2014-01-23 21:40 465 查看
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的关系:

typeexpr
SECONDSECONDS
MINUTE MINUTES
HOURHOURS
DAY DAYS
MONTH MONTHS
YEARYERAS
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"
如: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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: