下表列出了可通过SQL使用的所有重要的与日期和时间相关的重要功能。 RDBMS还支持其他各种功能。给定的列表基于MySQL RDBMS。
Sr.No. | Function & Description |
---|---|
1 |
ADDDATE()
添加日期 |
2 |
ADDTIME()
增加时间 |
3 |
CONVERT_TZ()
从一个时区转换到另一个时区 |
4 |
CURDATE()
返回当前日期 |
5 |
CURRENT_DATE(), CURRENT_DATE
Synonyms for CURDATE() |
6 |
CURRENT_TIME(), CURRENT_TIME
Synonyms for 营业时间() |
7 |
CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP
NOW()的同义词 |
8 |
营业时间()
返回当前时间 |
9 |
DATE_ADD()
加两个日期 |
10 |
DATE_FORMAT()
按照指定的格式设置日期 |
11 |
DATE_SUB()
减去两个日期 |
12 |
DATE()
提取日期或日期时间表达式的日期部分 |
13 |
DATEDIFF()
减去两个日期 |
14 |
DAY()
DAYOFMONTH()的同义词 |
15 |
DAYNAME()
返回工作日的名称 |
16 |
DAYOFMONTH()
返回月份中的一天(1-31) |
17 |
DAYOFWEEK()
返回参数的工作日索引 |
18 |
DAYOFYEAR()
返回一年中的一天(1-366) |
19 |
EXTRACT
提取日期的一部分 |
20 |
FROM_DAYS()
将天数转换为日期 |
21 |
FROM_UNIXTIME()
将日期格式化为UNIX时间戳 |
22 |
HOUR()
提取小时 |
23 |
LAST_DAY
返回参数的月份的最后一天 |
24 |
LOCALTIME(), LOCALTIME
NOW()的同义词 |
25 |
LOCALTIMESTAMP, LOCALTIMESTAMP()
NOW()的同义词 |
26 |
MAKEDATE()
从一年中的年月日创建日期 |
27 |
MAKETIME
负值() |
28 |
MICROSECOND()
从参数返回微秒 |
29 |
MINUTE()
返回参数的分钟 |
30 |
MONTH()
返回经过日期的月份 |
31 |
MONTHNAME()
返回月份名称 |
32 |
NOW()
返回当前日期 and time |
33 |
PERIOD_ADD()
在一年的月份中添加一个期间 |
34 |
PERIOD_DIFF()
返回期间之间的月数 |
35 |
QUARTER()
从日期参数返回季度 |
36 |
SEC_TO_TIME()
将秒转换为" HH:MM:SS"格式 |
37 |
SECOND()
返回第二个(0-59) |
38 |
STR_TO_DATE()
将字符串转换为日期 |
39 |
SUBDATE()
用三个参数调用时,DATE_SUB()的同义词 |
40 |
SUBTIME()
减去时间 |
41 |
SYSDATE()
返回函数执行的时间 |
42 |
TIME_FORMAT()
格式化为时间 |
43 |
TIME_TO_SEC()
返回转换为秒的参数 |
44 |
TIME()
提取传递的表达式的时间部分 |
45 |
TIMEDIFF()
减去时间 |
46 |
TIMESTAMP()
仅使用一个参数,此函数将返回日期或日期时间表达式。有两个参数,参数的总和 |
47 |
TIMESTAMPADD()
向日期时间表达式添加间隔 |
48 |
TIMESTAMPDIFF()
从日期时间表达式中减去一个间隔 |
49 |
TO_DAYS()
返回转换为天的日期参数 |
50 |
UNIX_TIMESTAMP()
返回UNIX时间戳 |
51 |
UTC_DATE()
返回当前UTC日期 |
52 |
UTC_TIME()
返回当前UTC时间 |
53 |
UTC_TIMESTAMP()
返回当前UTC日期 and time |
54 |
WEEK()
返回星期数 |
55 |
WEEKDAY()
返回工作日索引 |
56 |
WEEKOFYEAR()
返回日期的日历周(1-53) |
57 |
YEAR()
返回年份 |
58 |
YEARWEEK()
返回年份 and week |
ADDDATE(日期,INTERVAL expr单位),ADDDATE(expr,天)
当使用第二个参数的INTERVAL形式调用时,ADDDATE()是DATE_ADD()的同义词。相关函数SUBDATE()是DATE_SUB()的同义词。有关INTERVAL单位参数的信息,请参见DATE_ADD()的讨论。
mysql> SELECT DATE_ADD('1998-01-02', INTERVAL 31 DAY); +---------------------------------------------------------+ | DATE_ADD('1998-01-02', INTERVAL 31 DAY) | +---------------------------------------------------------+ | 1998-02-02 | +---------------------------------------------------------+ 1 row in set (0.00 sec) mysql> SELECT ADDDATE('1998-01-02', INTERVAL 31 DAY); +---------------------------------------------------------+ | ADDDATE('1998-01-02', INTERVAL 31 DAY) | +---------------------------------------------------------+ | 1998-02-02 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
当使用第二个参数的days形式调用时,MySQL将其视为要添加到expr的整数天数。
mysql> SELECT ADDDATE('1998-01-02', 31); +---------------------------------------------------------+ | DATE_ADD('1998-01-02', INTERVAL 31 DAY) | +---------------------------------------------------------+ | 1998-02-02 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
ADDTIME(expr1,expr2)
ADDTIME()将expr2添加到expr1并返回结果。 expr1是时间或日期时间表达式,而expr2是时间表达式。
mysql> SELECT ADDTIME('1997-12-31 23:59:59.999999','1 1:1:1.000002'); +---------------------------------------------------------+ | DATE_ADD('1997-12-31 23:59:59.999999','1 1:1:1.000002') | +---------------------------------------------------------+ | 1998-01-02 01:01:01.000001 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
CONVERT_TZ(dt,from_tz,to_tz)
这会将datetime值dt从from_tz给定的时区转换为to_tz给定的时区,并返回结果值。如果参数无效,则此函数返回NULL。
mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET'); +---------------------------------------------------------+ | CONVERT_TZ('2004-01-01 12:00:00','GMT','MET') | +---------------------------------------------------------+ | 2004-01-01 13:00:00 | +---------------------------------------------------------+ 1 row in set (0.00 sec) mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00'); +---------------------------------------------------------+ | CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00') | +---------------------------------------------------------+ | 2004-01-01 22:00:00 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
CURDATE()
返回当前日期 as a value in 'YYYY-MM-DD' or YYYYMMDD format, depending on whether the function is used in a string or in a numeric context.
mysql> SELECT CURDATE(); +---------------------------------------------------------+ | CURDATE() | +---------------------------------------------------------+ | 1997-12-15 | +---------------------------------------------------------+ 1 row in set (0.00 sec) mysql> SELECT CURDATE() + 0; +---------------------------------------------------------+ | CURDATE() + 0 | +---------------------------------------------------------+ | 19971215 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
CURRENT_DATE和CURRENT_DATE()
CURRENT_DATE和CURRENT_DATE() are synonyms for CURDATE()
营业时间()
返回当前时间 as a value in 'HH:MM:SS' or HHMMSS format, depending on whether the function is used in a string or in a numeric context. The value is expressed in the current time zone.
mysql> SELECT 营业时间(); +---------------------------------------------------------+ | 营业时间() | +---------------------------------------------------------+ | 23:50:26 | +---------------------------------------------------------+ 1 row in set (0.00 sec) mysql> SELECT 营业时间() + 0; +---------------------------------------------------------+ | 营业时间() + 0 | +---------------------------------------------------------+ | 235026 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
CURRENT_TIME和CURRENT_TIME()
CURRENT_TIME和CURRENT_TIME() are synonyms for 营业时间().
CURRENT_TIMESTAMP和CURRENT_TIMESTAMP()
CURRENT_TIMESTAMP和CURRENT_TIMESTAMP() are synonyms for NOW().
DATE(expr)
提取日期或日期时间表达式expr的日期部分。
mysql> SELECT DATE('2003-12-31 01:02:03'); +---------------------------------------------------------+ | DATE('2003-12-31 01:02:03') | +---------------------------------------------------------+ | 2003-12-31 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
DATEDIFF(expr1,expr2)
DATEDIFF()返回expr1。 expr2,以从一个日期到另一个日期的天数表示。 expr1和expr2都是日期或日期和时间表达式。在计算中仅使用值的日期部分。
mysql> SELECT DATEDIFF('1997-12-31 23:59:59','1997-12-30'); +---------------------------------------------------------+ | DATEDIFF('1997-12-31 23:59:59','1997-12-30') | +---------------------------------------------------------+ | 1 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
DATE_ADD(日期,INTERVAL表示单位),DATE_SUB(日期,INTERVAL表示单位)
这些函数执行日期算术。 date b>是指定开始日期的DATETIME或DATE值。 expr b>是一个表达式,用于指定要从开始日期开始添加或减去的间隔值。 expr是一个字符串;它可以以"-"开头表示负间隔。
unit b>是一个关键字,指示应解释表达式的单位。
INTERVAL b>关键字和单位说明符不区分大小写。
下表显示了每个单位值的expr参数的预期形式。
单位价值 th> | 预期的exprFormat th> tr> |
---|---|
MICROSECOND td> | MICROSECONDS td> tr> |
SECOND td> | SECONDS td> tr> |
MINUTE td> | 分钟 td> tr> |
HOUR td> | HOURS td> tr> |
DAY td> | DAYS td> tr> |
周 td> | 周 td> tr> |
MONTH td> | MONTHS td> tr> |
QUARTER td> | 季度 td> tr> |
YEAR td> | YEARS td> tr> |
SECOND_MICROSECOND td> | 'SECONDS.MICROSECONDS' td> tr> |
MINUTE_MICROSECOND td> | 'MINUTES.MICROSECONDS' td> tr> |
MINUTE_SECOND td> | 'MINUTES:SECONDS' td> tr> |
HOUR_MICROSECOND td> | 'HOURS.MICROSECONDS' td> tr> |
HOUR_SECOND td> | 'HOURS:MINUTES:SECONDS' td> tr> |
HOUR_MINUTE td> | "小时:分钟" td> tr> |
DAY_MICROSECOND td> | 'DAYS.MICROSECONDS' td> tr> |
DAY_SECOND td> | 'DAYS HOURS:MINUTES:SECONDS' td> tr> |
DAY_MINUTE td> | 'DAYS HOURS:MINUTES' td> tr> |
DAY_HOUR td> | 'DAYS HOURS' td> tr> |
YEAR_MONTH td> | 'YEARS-MONTHS' td> tr> |
值 QUARTER b>和 WEEK b>可从MySQL 5.0.0获得。版。
mysql> SELECT DATE_ADD('1997-12-31 23:59:59', -> INTERVAL '1:1' MINUTE_SECOND); +---------------------------------------------------------+ | DATE_ADD('1997-12-31 23:59:59', INTERVAL... | +---------------------------------------------------------+ | 1998-01-01 00:01:00 | +---------------------------------------------------------+ 1 row in set (0.00 sec) mysql> SELECT DATE_ADD('1999-01-01', INTERVAL 1 HOUR); +---------------------------------------------------------+ | DATE_ADD('1999-01-01', INTERVAL 1 HOUR) | +---------------------------------------------------------+ | 1999-01-01 01:00:00 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
DATE_FORMAT(日期,格式)
此命令根据格式字符串格式化日期值。
可以在格式字符串中使用以下说明符。格式说明符之前必须有'%'字符。
Sr.No. | Specifier & Description |
---|---|
1 |
%a b> 工作日的缩写名称(周日..周六) |
2 |
%b b> 月份缩写名称(Jan..Dec) |
3 |
%c b> 月份,数字(0..12) |
4 |
%D b> 带英文后缀的月份中的一天(0、1、2、3 、.) |
5 |
%d b> 每月的某天,数字(00..31) |
6 |
%e b> 每月的某天,数字(0..31) |
7 |
%f b> 微秒(000000..999999) |
8 |
%H b> 小时(00..23) |
9 |
%h b> 小时(01..12) |
10 |
%I b> 小时(01..12) |
11 |
%i b> 分钟,数字(00..59) |
12 |
%j b> 一年中的哪一天(001..366) |
13 |
%k b> 小时(0..23) |
14 |
%l b> 小时(1..12) |
15 |
%M b> 月名称(一月..十二月) |
16 |
%m b> 月份,数字(00..12) |
17 |
%p b> 上午或下午 |
18 |
%r b> Time, 12-hour (hh:mm:ss followed by 上午或下午) |
19 |
%S b> 秒(00..59) |
20 |
%s b> 秒(00..59) |
21 |
%T b> 时间24小时(hh:mm:ss) |
22 |
%U b> 周(00..53),其中星期日是一周的第一天 |
23 |
%u b> 周(00..53),其中星期一是一周的第一天 |
24 |
%V b> 周(01..53),其中周日是一周的第一天;与%X一起使用 |
25 |
%v b> 周(01..53),其中星期一是一周的第一天;与%x一起使用 |
26 |
%W b> 工作日名称(星期日..星期六) |
27 |
%w b> 星期几(0 =星期日..6 =星期六) |
28 |
%X b> 星期的年份,其中星期日是一周的第一天,数字,四位数;与%V一起使用 |
29 |
%x b> 一周的年份,其中星期一是一周的第一天,数字,四位数;与%v一起使用 |
30 |
%Y b> 年,数字,四位数 |
31 |
%y b> 年,数字(两位数字) |
32 |
%% b> 字面值。%。字符 |
33 |
%x b> x,对于任何x。上面没有列出 |
mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y'); +---------------------------------------------------------+ | DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y') | +---------------------------------------------------------+ | Saturday October 1997 | +---------------------------------------------------------+ 1 row in set (0.00 sec) mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00' -> '%H %k %I %r %T %S %w'); +---------------------------------------------------------+ | DATE_FORMAT('1997-10-04 22:23:00....... | +---------------------------------------------------------+ | 22 22 10 10:23:00 PM 22:23:00 00 6 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
DATE_SUB(日期,INTERVAL表示单位)
这类似于DATE_ADD()函数。
DAY(日期)
DAY()是DAYOFMONTH()函数的同义词。
DAYNAME(日期)
返回工作日的名称 for date.
mysql> SELECT DAYNAME('1998-02-05'); +---------------------------------------------------------+ | DAYNAME('1998-02-05') | +---------------------------------------------------------+ | Thursday | +---------------------------------------------------------+ 1 row in set (0.00 sec)
DAYOFMONTH(日期)
返回日期中月份的日期,范围为0到31。
mysql> SELECT DAYOFMONTH('1998-02-03'); +---------------------------------------------------------+ | DAYOFMONTH('1998-02-03') | +---------------------------------------------------------+ | 3 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
DAYOFWEEK(日期)
返回工作日索引 for date (1 = Sunday, 2 = Monday, ., 7 = Saturday). These index values correspond to the ODBC standard.
mysql> SELECT DAYOFWEEK('1998-02-03'); +---------------------------------------------------------+ |DAYOFWEEK('1998-02-03') | +---------------------------------------------------------+ | 3 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
DAYOFYEAR(日期)
返回日期中的日期,范围为1到366。
mysql> SELECT DAYOFYEAR('1998-02-03'); +---------------------------------------------------------+ | DAYOFYEAR('1998-02-03') | +---------------------------------------------------------+ | 34 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
提取(单位从日期开始)
EXTRACT()函数使用与DATE_ADD()或DATE_SUB()相同类型的单位说明符,但是从日期中提取部分而不是执行日期算术。
mysql> SELECT EXTRACT(YEAR FROM '1999-07-02'); +---------------------------------------------------------+ | EXTRACT(YEAR FROM '1999-07-02') | +---------------------------------------------------------+ | 1999 | +---------------------------------------------------------+ 1 row in set (0.00 sec) mysql> SELECT EXTRACT(YEAR_MONTH FROM '1999-07-02 01:02:03'); +---------------------------------------------------------+ | EXTRACT(YEAR_MONTH FROM '1999-07-02 01:02:03') | +---------------------------------------------------------+ | 199907 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
FROM_DAYS(N)
给定日期数字N,则返回DATE值。
mysql> SELECT FROM_DAYS(729669); +---------------------------------------------------------+ | FROM_DAYS(729669) | +---------------------------------------------------------+ | 1997-10-07 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
注意 b>-在旧日期上谨慎使用FROM_DAYS()。它不适用于公历(1582)出现之前的值。
FROM_UNIXTIME(unix_timestamp)
FROM_UNIXTIME(unix_timestamp,format)
以 -MM-DD HH:MM:SS或YYYYMMDDHHMMSS格式返回 unix_timestamp b>参数的表示形式,具体取决于该函数是在字符串中还是在数字上下文中使用。该值以当前时区表示。 unix_timestamp参数是内部时间戳值,由 UNIX_TIMESTAMP() b>函数产生。
如果给出了格式,则结果将根据格式字符串进行格式化,该格式字符串的使用方式与 DATE_FORMAT() b>函数的条目中列出的方式相同。
mysql> SELECT FROM_UNIXTIME(875996580); +---------------------------------------------------------+ | FROM_UNIXTIME(875996580) | +---------------------------------------------------------+ | 1997-10-04 22:23:00 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
小时(时间)
返回时间的小时。对于一天中的时间值,返回值的范围是0到23。但是,TIME值的范围实际上要大得多,因此HOUR可以返回大于23的值。
mysql> SELECT HOUR('10:05:03'); +---------------------------------------------------------+ | HOUR('10:05:03') | +---------------------------------------------------------+ | 10 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
LAST_DAY(日期)
获取日期或日期时间值,并返回当月最后一天的相应值。如果参数无效,则返回NULL。
mysql> SELECT LAST_DAY('2003-02-05'); +---------------------------------------------------------+ | LAST_DAY('2003-02-05') | +---------------------------------------------------------+ | 2003-02-28 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
LOCALTIME和LOCALTIME()
LOCALTIME和LOCALTIME() are synonyms for NOW().
LOCALTIMESTAMP和LOCALTIMESTAMP()
LOCALTIMESTAMP和LOCALTIMESTAMP() are synonyms for NOW().
MAKEDATE(年,日)
返回给定日期和年份值的日期。 dayofyear值必须大于0,否则结果将为NULL。
mysql> SELECT MAKEDATE(2001,31), MAKEDATE(2001,32); +---------------------------------------------------------+ | MAKEDATE(2001,31), MAKEDATE(2001,32) | +---------------------------------------------------------+ | '2001-01-31', '2001-02-01' | +---------------------------------------------------------+ 1 row in set (0.00 sec)
制作时间(时,分,秒)
返回根据小时,分钟和秒参数计算出的时间值。
mysql> SELECT MAKETIME(12,15,30); +---------------------------------------------------------+ | MAKETIME(12,15,30) | +---------------------------------------------------------+ | '12:15:30' | +---------------------------------------------------------+ 1 row in set (0.00 sec)
MICROSECOND(expr)
从时间或日期时间表达式(expr)返回微秒,范围为0到999999之间的一个数字。
mysql> SELECT MICROSECOND('12:00:00.123456'); +---------------------------------------------------------+ | MICROSECOND('12:00:00.123456') | +---------------------------------------------------------+ | 123456 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
分钟(时间)
返回时间的分钟,范围为0到59。
mysql> SELECT MINUTE('98-02-03 10:05:03'); +---------------------------------------------------------+ | MINUTE('98-02-03 10:05:03') | +---------------------------------------------------------+ | 5 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
MONTH(日期)
返回日期的月份,范围为0到12。
mysql> SELECT MONTH('1998-02-03') +---------------------------------------------------------+ | MONTH('1998-02-03') | +---------------------------------------------------------+ | 2 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
MONTHNAME(日期)
返回日期的月份的全名。
mysql> SELECT MONTHNAME('1998-02-05'); +---------------------------------------------------------+ | MONTHNAME('1998-02-05') | +---------------------------------------------------------+ | February | +---------------------------------------------------------+ 1 row in set (0.00 sec)
NOW()
返回当前日期 and time as a value in 'YYYY-MM-DD HH:MM:SS' or YYYYMMDDHHMMSS format, depending on whether the function is used in a string or numeric context. This value is expressed in the current time zone.
mysql> SELECT NOW(); +---------------------------------------------------------+ | NOW() | +---------------------------------------------------------+ | 1997-12-15 23:50:26 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
PERIOD_ADD(P,N)
向期间P添加N个月(格式为YYMM或YYYYMM)。返回格式为YYYYMM的值。请注意,期间参数P不是日期值。
mysql> SELECT PERIOD_ADD(9801,2); +---------------------------------------------------------+ | PERIOD_ADD(9801,2) | +---------------------------------------------------------+ | 199803 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
PERIOD_DIFF(P1,P2)
返回期间之间的月数 P1 and P2. These periods P1 and P2 should be in the format YYMM or YYYYMM. Note that the period arguments P1 and P2 are not date values.
mysql> SELECT PERIOD_DIFF(9802,199703); +---------------------------------------------------------+ | PERIOD_DIFF(9802,199703) | +---------------------------------------------------------+ | 11 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
季度(日期)
返回日期的一年的四分之一,范围为1到4。
mysql> SELECT QUARTER('98-04-01'); +---------------------------------------------------------+ | QUARTER('98-04-01') | +---------------------------------------------------------+ | 2 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
第二次)
返回秒的时间,范围为0到59。
mysql> SELECT SECOND('10:05:03'); +---------------------------------------------------------+ | SECOND('10:05:03') | +---------------------------------------------------------+ | 3 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
SEC_TO_TIME(秒)
返回秒参数(转换为小时,分钟和秒),形式为" HH:MM:SS"或HHMMSS格式的值,具体取决于该函数是在字符串上下文中还是在数字上下文中使用。
mysql> SELECT SEC_TO_TIME(2378); +---------------------------------------------------------+ | SEC_TO_TIME(2378) | +---------------------------------------------------------+ | 00:39:38 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
STR_TO_DATE(str,format)
这是DATE_FORMAT()函数的反函数。它采用字符串str和格式字符串格式。如果格式字符串同时包含日期和时间部分,则STR_TO_DATE()函数将返回DATETIME值。否则,如果字符串仅包含日期或时间部分,它将返回DATE或TIME值。
mysql> SELECT STR_TO_DATE('04/31/2004', '%m/%d/%Y'); +---------------------------------------------------------+ | STR_TO_DATE('04/31/2004', '%m/%d/%Y') | +---------------------------------------------------------+ | 2004-04-31 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
SUBDATE(日期,INTERVAL expr单位)和SUBDATE(expr,天)
当使用第二个参数的INTERVAL形式调用时,SUBDATE()是DATE_SUB()的同义词。有关INTERVAL单位参数的信息,请参见DATE_ADD()的讨论。
mysql> SELECT DATE_SUB('1998-01-02', INTERVAL 31 DAY); +---------------------------------------------------------+ | DATE_SUB('1998-01-02', INTERVAL 31 DAY) | +---------------------------------------------------------+ | 1997-12-02 | +---------------------------------------------------------+ 1 row in set (0.00 sec) mysql> SELECT SUBDATE('1998-01-02', INTERVAL 31 DAY); +---------------------------------------------------------+ | SUBDATE('1998-01-02', INTERVAL 31 DAY) | +---------------------------------------------------------+ | 1997-12-02 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
SUBTIME(expr1,expr2)
SUBTIME()函数返回expr1。 expr2以与expr1相同的格式表示为值。 expr1值是时间或日期时间表达式,而expr2值是时间表达式。
mysql> SELECT SUBTIME('1997-12-31 23:59:59.999999', -> '1 1:1:1.000002'); +---------------------------------------------------------+ | SUBTIME('1997-12-31 23:59:59.999999'... | +---------------------------------------------------------+ | 1997-12-30 22:58:58.999997 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
SYSDATE()
返回当前日期 and time as a value in 'YYYY-MM-DD HH:MM:SS' or YYYYMMDDHHMMSS format, depending on whether the function is used in a string or in a numeric context.
mysql> SELECT SYSDATE(); +---------------------------------------------------------+ | SYSDATE() | +---------------------------------------------------------+ | 2006-04-12 13:47:44 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
TIME(expr)
提取时间或日期时间表达式 expr b>的时间部分,并将其作为字符串返回。
mysql> SELECT TIME('2003-12-31 01:02:03'); +---------------------------------------------------------+ | TIME('2003-12-31 01:02:03') | +---------------------------------------------------------+ | 01:02:03 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
TIMEDIFF(expr1,expr2)
TIMEDIFF()函数返回expr1。以时间值表示的expr2。这些expr1和expr2值是时间或日期和时间表达式,但两者必须是同一类型。
mysql> SELECT TIMEDIFF('1997-12-31 23:59:59.000001', -> '1997-12-30 01:01:01.000002'); +---------------------------------------------------------+ | TIMEDIFF('1997-12-31 23:59:59.000001'..... | +---------------------------------------------------------+ | 46:58:57.999999 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
TIMESTAMP(expr),TIMESTAMP(expr1,expr2)
仅使用一个参数,此函数将date或datetime表达式expr作为datetime值返回。它使用两个参数将时间表达式expr2添加到日期或日期时间表达式 expr1 b>中,并将结果作为日期时间值返回。
mysql> SELECT TIMESTAMP('2003-12-31'); +---------------------------------------------------------+ | TIMESTAMP('2003-12-31') | +---------------------------------------------------------+ | 2003-12-31 00:00:00 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
TIMESTAMPADD(单位,间隔,datetime_expr)
此函数将整数表达式间隔添加到日期或日期时间表达式 datetime_expr b>中。间隔的单位由unit参数指定,该参数应为以下值之一-
- FRAC_SECOND li>
- 第二分钟 li>
- 星期几 li>
- 周 li>
- 月 li>
- QUARTER或 li>
- 年 li>
可以使用所示的关键字之一或使用SQL_TSI_的前缀来指定单位值。
例如,DAY和SQL_TSI_DAY都是合法的。
mysql> SELECT TIMESTAMPADD(MINUTE,1,'2003-01-02'); +---------------------------------------------------------+ | TIMESTAMPADD(MINUTE,1,'2003-01-02') | +---------------------------------------------------------+ | 2003-01-02 00:01:00 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
TIMESTAMPDIFF(单位,datetime_expr1,datetime_expr2)
返回日期或日期时间表达式datetime_expr1和datetime_expr2之间的整数差。结果的单位由unit参数指定。该单位的合法值与TIMESTAMPADD()函数的说明中列出的值相同。
mysql> SELECT TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01'); +---------------------------------------------------------+ | TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01') | +---------------------------------------------------------+ | 3 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
TIME_FORMAT(时间,格式)
该函数的用法类似于DATE_FORMAT()函数,但是格式字符串只能包含小时,分钟和秒的格式说明符。
如果时间值包含大于23的小时部分,则% H b>和% k b>小时格式说明符会产生一个比通常范围0到23大的值。其他小时格式说明符会产生以12为模的小时值。
mysql> SELECT TIME_FORMAT('100:00:00', '%H %k %h %I %l'); +---------------------------------------------------------+ | TIME_FORMAT('100:00:00', '%H %k %h %I %l') | +---------------------------------------------------------+ | 100 100 04 04 4 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
TIME_TO_SEC(时间)
返回转换为秒的时间参数。
mysql> SELECT TIME_TO_SEC('22:23:00'); +---------------------------------------------------------+ | TIME_TO_SEC('22:23:00') | +---------------------------------------------------------+ | 80580 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
今天的日期)
给定日期,返回天数(从0年开始的天数)。
mysql> SELECT TO_DAYS(950501); +---------------------------------------------------------+ | TO_DAYS(950501) | +---------------------------------------------------------+ | 728779 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
UNIX_TIMESTAMP(),UNIX_TIMESTAMP(日期)
如果不带任何参数调用,则此函数以无符号整数形式返回Unix时间戳(自1970年1月1日00:00:00 UTC以来的秒数)。如果使用日期参数调用UNIX_TIMESTAMP(),则它将返回自1970年1月1日00:00:00 UTC以来的参数值(以秒为单位)。 date可以是DATE字符串,DATETIME字符串,TIMESTAMP或YYMMDD或YYYYMMDD格式的数字。
mysql> SELECT UNIX_TIMESTAMP(); +---------------------------------------------------------+ | UNIX_TIMESTAMP() | +---------------------------------------------------------+ | 882226357 | +---------------------------------------------------------+ 1 row in set (0.00 sec) mysql> SELECT UNIX_TIMESTAMP('1997-10-04 22:23:00'); +---------------------------------------------------------+ | UNIX_TIMESTAMP('1997-10-04 22:23:00') | +---------------------------------------------------------+ | 875996580 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
UTC_DATE,UTC_DATE()
返回当前UTC日期 as a value in 'YYYY-MM-DD' or YYYYMMDD format, depending on whether the function is used in a string or numeric context.
mysql> SELECT UTC_DATE(), UTC_DATE() + 0; +---------------------------------------------------------+ | UTC_DATE(), UTC_DATE() + 0 | +---------------------------------------------------------+ | 2003-08-14, 20030814 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
UTC_TIME,UTC_TIME()
返回当前UTC时间 as a value in 'HH:MM:SS' or HHMMSS format, depending on whether the function is used in a string or numeric context.
mysql> SELECT UTC_TIME(), UTC_TIME() + 0; +---------------------------------------------------------+ | UTC_TIME(), UTC_TIME() + 0 | +---------------------------------------------------------+ | 18:07:53, 180753 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
UTC_TIMESTAMP,UTC_TIMESTAMP()
返回当前UTC日期 and time as a value in 'YYYY-MM-DD HH:MM:SS' or in a YYYYMMDDHHMMSS format, depending on whether the function is used in a string or in a numeric context.
mysql> SELECT UTC_TIMESTAMP(), UTC_TIMESTAMP() + 0; +---------------------------------------------------------+ | UTC_TIMESTAMP(), UTC_TIMESTAMP() + 0 | +---------------------------------------------------------+ | 2003-08-14 18:08:04, 20030814180804 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
WEEK(日期[,模式])
此函数返回日期的星期数。 WEEK()的两个参数形式允许您指定星期是从星期日还是星期一开始,以及返回值应在0到53或从1到53的范围内。如果省略了mode参数,使用default_week_format系统变量的值
模式 th> | 一周的第一天 th> | 范围 th> | 第1周是第一周。 th> tr> |
---|---|---|---|
0 td> | 星期日 td> | 0-53 td> | 今年有一个星期天 td> tr> |
1 td> | 星期一 td> | 0-53 td> | 今年超过3天 td> tr> |
2 td> | 星期日 td> | 1-53 td> | 今年有一个星期天 td> tr> |
3 td> | 星期一 td> | 1-53 td> | 今年超过3天 td> tr> |
4 td> | 星期日 td> | 0-53 td> | 今年超过3天 td> tr> |
5 td> | 星期一 td> | 0-53 td> | 今年有一个星期一 td> tr> |
6 td> | 星期日 td> | 1-53 td> | 今年超过3天 td> tr> |
7 td> | 星期一 td> | 1-53 td> | 今年有一个星期一 td> tr> |
mysql> SELECT WEEK('1998-02-20'); +---------------------------------------------------------+ | WEEK('1998-02-20') | +---------------------------------------------------------+ | 7 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
WEEKDAY(日期)
返回工作日索引 for date (0 = Monday, 1 = Tuesday, . 6 = Sunday).
mysql> SELECT WEEKDAY('1998-02-03 22:23:00'); +---------------------------------------------------------+ | WEEKDAY('1998-02-03 22:23:00') | +---------------------------------------------------------+ | 1 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
WEEKOFYEAR(日期)
以1到53之间的数字形式返回日期的日历周。WEEKOFYEAR()是一个兼容函数,等效于WEEK(date,3)。
mysql> SELECT WEEKOFYEAR('1998-02-20'); +---------------------------------------------------------+ | WEEKOFYEAR('1998-02-20') | +---------------------------------------------------------+ | 8 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
年份(日期)
返回年份 for date, in the range 1000 to 9999, or 0 for the .zero. date.
mysql> SELECT YEAR('98-02-03'); +---------------------------------------------------------+ | YEAR('98-02-03') | +---------------------------------------------------------+ | 1998 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
YEARWEEK(日期),YEARWEEK(日期,模式)
返回年份 and the week for a date. The mode argument works exactly like the mode argument to the WEEK() function. The year in the result may be different from the year in the date argument for the first and the last week of the year.
mysql> SELECT YEARWEEK('1987-01-01'); +---------------------------------------------------------+ | YEAR('98-02-03')YEARWEEK('1987-01-01') | +---------------------------------------------------------+ | 198653 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
注意 b>-星期数与WEEK()函数对于可选参数0或1返回的(0)不同,因为WEEK()然后在给定年份的上下文中返回星期。
参考链接
https://www.learnfk.com/sql/sql-date-functions#function-adddate.html
标签:02,00,01,ADDDATE,无涯,SQL,td,+---------------------------------------------------- From: https://blog.51cto.com/u_14033984/9291115