ADDDATE(date,
INTERVAL expr unit),
ADDDATE(expr,days)
时间加减函数。 当使
用第二个参数的INTERVAL
形式调用时,ADDDATE()
是DATE_ADD()的同义词。
相关函数SUBDATE()
是DATE_SUB()的同义词
SELECT DATE_ADD('2008-01-02', INTERVAL 31 DAY);
-> '2008-02-02'
SELECT ADDDATE('2008-01-02', INTERVAL 31 DAY);
-> '2008-02-02'
SELECT ADDDATE('2008-01-02', 31);
-> '2008-02-02'
ADDTIME(expr1,expr2)
expr1是时间或日期时间表达式,
expr2是时间表达式,
返回expr1+expr2
SELECT ADDTIME('2007-12-31 23:59:59.999999', '1 1:1:1.000002');
-> '2008-01-02 01:01:01.000001'
SELECT ADDTIME('01:00:00.999999', '02:00:00.999998');
-> '03:00:01.999997'
CONVERT_TZ(dt,
from_tz,to_tz)
将datetime值dt从from_tz
给出的时区转换为to_tz
给出的时区,并返回
结果值
SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET');
-> '2004-01-01 13:00:00'
SELECT CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00');
-> '2004-01-01 22:00:00'
CURDATE()
CURRENT_DATE
CURRENT_DATE()
根据函数在字符串或
数字上下文中的使用
情况,以'YYYY-MM-DD'
或YYYYMMDD格式返回
当前日期作为值
SELECT CURDATE();
-> '2008-06-13'
SELECT CURDATE() + 0;
SELECT CURDATE() + 0;
CURRENT_TIME
CURRENT_TIME([fsp])
CURTIME()
以'hh:mm:ss'或hhmmss
格式返回当前时间值,
具体取决于函数是在字
符串中使用还是在数字
上下文中使用。该值
在会话时区中表示
SELECT CURTIME();
-> '23:50:26'
CURRENT_TIMESTAMP
CURRENT_TIMESTAMP
([fsp])NOW()
以'YYYY-MM-DD hh:mm:ss'或
YYYYMMDDhhmmss格式返回
当前日期和时间,
具体取决于函数是在
字符串中使用还是在数
字上下文中使用。该值
在会话时区中表示
SELECT NOW();
-> '2007-12-15 23:50:26'
DATE(expr)
提取date或datetime表
达式expr的date部分
SELECT DATE('2003-12-31 01:02:03');
-> '2003-12-31'
DATEDIFF(expr1,expr2)
DATEDIFF()返回
expr1 - expr2,
表示为从一个日期到
另一个日期的天数。
expr1和expr2是日期或日期
和时间表达式。
计算中只使用值的日期部分
SELECT DATEDIFF('2007-12-31 23:59:59','2007-12-30');
-> 1
DATE_ADD(date,
INTERVAL expr unit)
DATE_SUB(date,
INTERVAL expr unit)
通ADDDATE()
DATE_FORMAT
(date,format)
根据格式字符串格式化
日期值
SELECT DATE_FORMAT('2007-10-04 22:23:00', '%H:%i:%s');
-> '22:23:00'
参见format列表
DATE_SUB(date,
INTERVAL expr unit)
同 DATE_ADD()
DAY(date)
同DAYOFMONTH()
DAYNAME(date)
返回日期的工作日名称。
名称使用的语言由
lc_time_names
系统变量的值控制
SELECT DAYNAME('2007-02-03');
-> 'Saturday'
参见local列表
DAYOFMONTH(date)
返回日期的月份的日期,范围
在1到31之间,或0表示日期,
例如“00:00 -00-00”或“200:00 -00”
包含零日部分
SELECT DAYOFMONTH('2007-02-03');
-> 3
DAYOFWEEK(date)
返回日期的工作日索引
(1 = Sunday, 2 = Monday,…,
7 = Saturday)。这些索引值对
应于ODBC标准
SELECT DAYOFWEEK('2007-02-03');
-> 7
DAYOFYEAR(date)
返回一年中的日期,范围
为1到366
SELECT DAYOFYEAR('2007-02-03');
-> 34
EXTRACT
(unit FROM date)
EXTRACT()函数使用与
DATE_ADD()或DATE_SUB()
相同的单元说明符,但
是它从日期中提取部分
内容,而不是执行日期
算术。有关单位
参数的信息,请参阅
Intervals列表
SELECT EXTRACT(YEAR FROM '2019-07-02');
->2019
FROM_DAYS(N)
给定日期N,返回日期值
SELECT FROM_DAYS(730669);
->'2000-07-03'
FROM_UNIXTIME(
unix_timestamp
[,format])
返回unix_timestamp参数
的表示形式,作为
'YYYY-MM-DD hh:mm:ss'
或YYYYMMDDhhmmss中的值。
uuuuu格式,取决于函
数是在字符串中使用
还是在数字上下文中使用
SELECT FROM_UNIXTIME(1447430881);
-> '2015-11-13 10:08:01'
SELECT FROM_UNIXTIME(1447430881,'%Y %D %M %h:%i:%s %x');
-> '2015 13th November 10:08:01 2015'
GET_FORMAT({DATE
|TIME|DATETIME},
{'EUR'|'USA'|'JIS'
|'ISO'|'INTERNAL'})
返回格式字符串。这个函数与
DATE_FORMAT()和
STR_TO_DATE()函数结合
使用非常有用。
SELECT DATE_FORMAT('2003-10-03',GET_FORMAT(DATE,'EUR'));
-> '03.10.2003'
SELECT STR_TO_DATE('10.31.2003',GET_FORMAT(DATE,'USA'));
-> '2003-10-31' 更多参见GET_FORMAT列表
HOUR(time)
返回时间的小时。
对于时间值,返回值
的范围是0到23。然而,
时间值的范围实际上
要大得多,所以
HOUR可以返回大于23的值
SELECT HOUR('10:05:03');
-> 10
LAST_DAY(date)
根据date或datetime值返回该月
最后一天的对应值。如果
参数无效,则返回NULL
SELECT LAST_DAY('2003-02-05');
-> '2003-02-28'
SELECT LAST_DAY('2004-01-01 01:01:01');
-> '2004-01-31'
LOCALTIME,
LOCALTIME([fsp])
同NOW()
LOCALTIMESTAMP,
LOCALTIMESTAMP
([fsp])
同NOW()
MAKEDATE(year,dayofyear)
根据年份和一年中的
日期数的值,返回日期。
dayofyear必须大于0,
否则结果为NULL
SELECT MAKEDATE(2011,31), MAKEDATE(2011,32);
-> '2011-01-31', '2011-02-01'
MAKETIME(hour,
minute,second)
根据给定的时分秒返回时
间,第二个参数可以是小数
SELECT MAKETIME(12,15,30);
-> '12:15:30'
MICROSECOND(expr)
将time或datetime表达式expr中
的微秒作为0到999999之间的
数字返回
SELECT MICROSECOND('2019-12-31 23:59:59.000010');
-> 10
MINUTE(time)
返回0到59范围内的时间分钟
SELECT MINUTE('2008-02-03 10:05:03');
-> 5
MONTH(date)
返回日期的月份,在1月
到12月的范围内为1到12,
或者在“00000 -00-00”
或“200000 -00-00”等包含
零月份部分的日期范
围内为0
SELECT MONTH('2008-02-03');
-> 2
MONTHNAME(date)
返回日期的月份的全名。名
称使用的语言由lc_time_names
系统变量的值控制
SELECT MONTHNAME('2008-02-03');
-> 'February'
NOW([fsp])
以'YYYY-MM-DD hh:mm:ss'或
YYYYMMDDhhmmss格式返
回当前日期和时间,具
体取决于函数是在字符串中使
用还是在数字上下文中使用。该
值在会话时区中表示
SELECT NOW();
-> '2007-12-15 23:50:26'
PERIOD_ADD(P,N)
在周期P中添加N个月
(格式为YYMM或YYYYMM)。
返回格式为YYYYMM的值
SELECT PERIOD_ADD(200801,2);
-> 200803
PERIOD_DIFF(P1,P2)
返回P1和P2期间的月数。
P1和P2的格式应该
是YYMM或YYYYMM
SELECT PERIOD_DIFF(200802,200703);
-> 11
QUARTER(date)
返回日期的年度季度,
范围为1到4
SELECT QUARTER('2008-04-01');
-> 2
SECOND(time)
返回时间的秒数,
范围0-59
SELECT SECOND('10:05:03');
-> 3
SEC_TO_TIME(seconds)
根据秒参数,作为时间
值转换为小时、分钟和
秒。果的范围受时
间数据类型的限制。
如果参数对应于该范围
之外的值,则会出现警告
SELECT SEC_TO_TIME(2378);
-> '00:39:38'
STR_TO_DATE(str,format)
将str转化为日期
SELECT STR_TO_DATE('01,5,2013','%d,%m,%Y');
-> '2013-05-01'
SUBDATE(date,
INTERVAL expr unit),
SUBDATE(expr,days)
当使用第二个参数的区
间形式调用时,SUBDATE()
是DATE_SUB()的同义词
。有关间隔单元参数的信息,
请参阅DATE_ADD()的讨论
SELECT DATE_SUB('2008-01-02', INTERVAL 31 DAY);
-> '2007-12-02'
SUBTIME(expr1,expr2)
SUBTIME()返回与expr1格式
相同的值expr1 - expr2。
expr1是一个时间或
datetime表达式,
expr2是一个时间表达式
SELECT SUBTIME('2007-12-31 23:59:59.999999','1 1:1:1.000002');
-> '2007-12-30 22:58:58.999997'
SYSDATE([fsp])
以'YYYY-MM-DD hh:mm:ss'
或YYYYMMDDhhmmss格式
返回当前日期和时间,
具体取决于函数是在字符
串中使用还是在数字
上下文中使用
TIME(expr)
提取time或datetime表达式expr
的时间部分,并将其
作为字符串返回
SELECT TIME('2003-12-31 01:02:03');
-> '01:02:03'
SELECT TIME('2003-12-31 01:02:03.000123');
-> '01:02:03.000123'
TIMEDIFF(expr1,expr2)
TIMEDIFF()返回表示为时间
值的expr1 - expr2。
expr1和expr2是time或
date-and-time表达
式,但是它们必须具有
相同的类型
SELECT TIMEDIFF('2008-12-31 23:59:59.000001',
'2008-12-30 01:01:01.000002');
-> '46:58:57.999999'
TIMESTAMP(expr),
TIMESTAMP(expr1,expr2)
使用一个参数,该函
数将date或datetime
表达式expr作为datetime
值返回。使用两个参数,
它将时间表达式expr2
添加到date或datetime表达
式expr1中,并将结果作为
datetime值返回
SELECT TIMESTAMP('2003-12-31');
-> '2003-12-31 00:00:00'
SELECT TIMESTAMP('2003-12-31 12:00:00','12:00:00');
-> '2004-01-01 00:00:00'
TIMESTAMPADD(unit,
interval,datetime_expr)
将整数表达式间隔添加
到日期或datetime表达式
datetime_expr。interval的
单位由单位参数给出,该
参数应该是以下值
之一:微秒(微秒)、秒、
分钟、小时、天、周、月、
季或年
SELECT TIMESTAMPADD(MINUTE,1,'2003-01-02');
-> '2003-01-02 00:01:00'
SELECT TIMESTAMPADD(WEEK,1,'2003-01-02');
-> '2003-01-09'
TIMESTAMPDIFF(unit,
datetime_expr1,
datetime_expr2)
返回datetime_expr2−
datetime_expr1,
其中datetime_expr1和
datetime_expr2是日期
或datetime表达式。一个
表达式可以是日期,
另一个表达式是日
期时间;日期值被视为一个
datetime,
在必要时包含时间部分
'00:00:00'。结果的
单位(整数)由单位参
数给出。unit的合法值
与TIMESTAMPADD()函
数描述中列出的值相同
SELECT TIMESTAMPDIFF(MONTH,'2003-02-01',
'2003-05-01');
-> 3
SELECT TIMESTAMPDIFF(MINUTE,'2003-02-01',
'2003-05-01 12:05:55');
->128885
TIME_FORMAT
(time,format)
这类似于DATE_FORMAT()函数,
但是格式字符串可能只包含小时、
分钟、秒和微秒的格式说明符。
其他说明符生成空值或0
SELECT TIME_FORMAT('100:00:00', '%H %k %h %I %l');
-> '100 100 04 04 4'
TIME_TO_SEC(time)
时间time转化为秒
SELECT TIME_TO_SEC('22:23:00');
-> 80580
TO_DAYS(date)
定日期date,返回日期号
(从第0年开始的天数)
SELECT TO_DAYS(950501);
-> 728779
SELECT TO_DAYS('2007-10-07');
-> 733321
TO_SECONDS(expr)
给定日期或datetime expr,返回从
第0年开始的秒数。如果expr
不是一个有效的日期或
datetime值,则返回NULL
SELECT TO_SECONDS('2009-11-29 13:43:32');
-> 63426721412
UNIX_TIMESTAMP
([date])
如果在没有date参数的
情况下调用UNIX_TIMESTAMP(),
它将返回一个Unix时间戳,
表示“1970-01-01 00:00:00”UTC
之后的秒.如果使用date
参数调用UNIX_TIMESTAMP(),
它将返回参数的值,
为“1970-01-01 00:00:00”
UTC之后的秒
SELECT UNIX_TIMESTAMP();
-> 1447431666
SELECT UNIX_TIMESTAMP('2015-11-13 10:20:19.012');
-> 1447431619.012
UTC_DATE,
UTC_DATE()
返回当前UTC日期作为
'YYYY-MM-DD'或YYYYMMDD
格式的值,这取决于
函数是在字符串中使用
还是在数字上下文中
使用。
SELECT UTC_DATE(), UTC_DATE() + 0;
-> '2003-08-14', 20030814
UTC_TIME,
UTC_TIME([fsp])
以'hh:mm:ss'或hhmmss
格式返回当前UTC
时间值,具体取决于函
数是在字符串中使用还
是在数字上下文中使用
SELECT UTC_TIME(), UTC_TIME() + 0;
-> '18:07:53', 180753.000000
UTC_TIMESTAMP,
UTC_TIMESTAMP
([fsp])
以'YYYY-MM-DD hh:mm:ss'
或YYYYMMDDhhmmss
格式返回当前UTC日期和时间,
具体取决于函数是在字
符串中使用还是在
数字上下文中使用
SELECT UTC_TIMESTAMP(), UTC_TIMESTAMP() + 0;
-> '2003-08-14 18:08:04', 20030814180804.000000
WEEK(date[,mode])
返回日期的星期号。
two-argument form of WEEK()
使您能够指定该周是
在周日还是周一开始,
以及返回值应该
在0到53之间,还是在1到53之间。
如果省略mode参数,
则使用default_week_format
系统变量的值 mode值
参见mode列表
SELECT WEEK('2008-02-20');
-> 7
WEEKDAY(date)
返回日期的星期索引
(0 =星期一、1 =星期二、
…6 =星期日)。
SELECT WEEKDAY('2008-02-03 22:23:00');
-> 6
WEEKOFYEAR(date)
以1到53之间的数字返回
日期的日历周。
WEEKOFYEAR()是一个兼容
函数,它等价于WEEK
(date,3)。
SELECT WEEKOFYEAR('2008-02-20');
-> 8
YEAR(date)
返回日期的年份,
范围为1000到9999,
或0表示“0”日期。
SELECT YEAR('1987-01-01');
-> 1987
YEARWEEK(date),
YEARWEEK(date,mode)
返回日期的年份和星期
SELECT YEARWEEK('1987-01-01');
-> 198652