mysql的日期和时间函数【转载】
1.ADDDATE(date,INTERVAL expr type) ADDDATE(expr,days)
增加天数。
如:
mysql> SELECT DATE_ADD('1998-01-02', INTERVAL 31 DAY);
-> '1998-02-02'
若 days 参数只是整数值,则 MySQL 5.1将其作为天数值添加至 expr。
mysql> SELECT ADDDATE('1998-01-02', 31);
-> '1998-02-02'
2.ADDTIME(expr,expr2)
ADDTIME()将 expr2添加至expr 然后返回结果。 expr 是一个时间或时间日期表达式,而expr2 是一个时间表达式。
mysql> SELECT ADDTIME('1997-12-31 23:59:59.999999',
-> '1 1:1:1.000002');
-> '1998-01-02 01:01:01.000001'
3.CONVERT_TZ(dt,from_tz,to_tz)
CONVERT_TZ() 将时间日期值dt 从from_tz 给出的时区转到to_tz给出的时区,然后返回结果值。
mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET');
-> '2004-01-01 13:00:00'
4.CURDATE()
将当前日期按照'YYYY-MM-DD' 或YYYYMMDD 格式的值返回,具体格式根据函数用在字符串或是数字语境中而定。
mysql> SELECT CURDATE();
-> '1997-12-15'
mysql> SELECT CURDATE() + 0;
-> 19971215
5.CURRENT_DATE CURRENT_DATE()
CURRENT_DATE和CURRENT_DATE()是的同义词.
6.CURTIME()
将当前时间以'HH:MM:SS'或 HHMMSS 的格式返回, 具体格式根据函数用在字符串或是数字语境中而定。
mysql> SELECT CURTIME();
-> '23:50:26'
mysql> SELECT CURTIME() + 0;
-> 235026
7.CURRENT_TIME, CURRENT_TIME()
CURRENT_TIME 和CURRENT_TIME() 是CURTIME()的同义词。
8.CURRENT_TIMESTAMP, CURRENT_TIMESTAMP()
CURRENT_TIMESTAMP和 CURRENT_TIMESTAMP()是NOW()的同义词。
9.DATE(expr)
提取日期或时间日期表达式expr中的日期部分。
mysql> SELECT DATE('2003-12-31 01:02:03');
-> '2003-12-31'
10.DATEDIFF(expr,expr2)
DATEDIFF() 返回起始时间 expr和结束时间expr2之间的天数。Expr和expr2 为日期或 date-and-time 表达式。计算中只用到这些值的日期部分。
mysql> SELECT DATEDIFF('1997-12-31 23:59:59','1997-12-30');
-> 1
11.DATE_ADD(date,INTERVAL expr type) DATE_SUB(date,INTERVAL expr type)
这些函数执行日期运算。 date 是一个 DATETIME 或DATE值,用来指定起始时间。
expr 是一个表达式,用来指定 从起始日期添加或减去的时间间隔值 。
Expr是一个字符串;对于负值的时间间隔,它可以以一个 ‘-’开头。 type 为关键词,它指示了表达式被解释的方式。
mysql> SELECT '1997-12-31 23:59:59' + INTERVAL 1 SECOND;
-> '1998-01-01 00:00:00'
12.DATE_FORMAT(date,format)
根据format 字符串安排date 值的格式。
如:
mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y');
-> 'Saturday October 1997'
13.DAY(date)
DAY() 和DAYOFMONTH()的意义相同。
14.DAYNAME(date)
返回date 对应的工作日名称。
mysql> SELECT DAYNAME('1998-02-05');
-> '周四'
15.DAYOFMONTH(date)
返回date 对应的该月日期,范围是从 1到31。
mysql> SELECT DAYOFMONTH('1998-02-03');
-> 3
16.DAYOFWEEK(date)
返回date (1 = 周日, 2 = 周一, ..., 7 = 周六)对应的工作日索引。这些索引值符合 ODBC标准。
mysql> SELECT DAYOFWEEK('1998-02-03');
-> 3
17.DAYOFYEAR(date)
返回date 对应的一年中的天数,范围是从 1到366。
mysql> SELECT DAYOFYEAR('1998-02-03');
-> 34
18.EXTRACT(type FROM date)
EXTRACT()函数所使用的时间间隔类型说明符同 DATE_ADD()或DATE_SUB()的相同,但它从日期中提取其部分,而不是执行日期运算。
mysql> SELECT EXTRACT(YEAR FROM '1999-07-02');
-> 1999
19.FROM_DAYS(N)
给定一个天数 N, 返回一个DATE值。
mysql> SELECT FROM_DAYS(729669);
-> '1997-10-07'
20.FROM_UNIXTIME(unix_timestamp) , FROM_UNIXTIME(unix_timestamp,format)
返回'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS 格式值的unix_timestamp参数表示,具体格式取决于该函数是否用在字符串中或是数字语境中。
mysql> SELECT FROM_UNIXTIME(875996580);
-> '1997-10-04 22:23:00'
21.GET_FORMAT(DATE|TIME|DATETIME, 'EUR'|'USA'|'JIS'|'ISO'|'INTERNAL')
返回一个格式字符串。
mysql> SELECT DATE_FORMAT('2003-10-03',GET_FORMAT(DATE,'EUR'));
-> '03.10.2003'
22.HOUR(time)
返回time 对应的小时数。对于日时值的返回值范围是从 0 到 23 。
mysql> SELECT HOUR('10:05:03');
-> 10
23.LAST_DAY(date)
获取一个日期或日期时间值,返回该月最后一天对应的值。若参数无效,则返回NULL。
mysql> SELECT LAST_DAY('2003-02-05');
-> '2003-02-28'
24.LOCALTIME, LOCALTIME()
LOCALTIME 及 LOCALTIME()和NOW()具有相同意义。
25.LOCALTIMESTAMP, LOCALTIMESTAMP()
LOCALTIMESTAMP和LOCALTIMESTAMP()和NOW()具有相同意义。
26.MAKEDATE(year,dayofyear)
给出年份值和一年中的天数值,返回一个日期。dayofyear 必须大于 0 ,否则结果为 NULL。
mysql> SELECT MAKEDATE(2001,31), MAKEDATE(2001,32);
-> '2001-01-31', '2001-02-01'
27.MAKETIME(hour,minute,second)
返回由hour、 minute和second 参数计算得出的时间值。
mysql> SELECT MAKETIME(12,15,30);
-> '12:15:30'
28.MICROSECOND(expr)
从时间或日期时间表达式expr返回微秒值,其数字范围从 0到 999999。
mysql> SELECT MICROSECOND('12:00:00.123456');
-> 123456
29.MINUTE(time)
返回 time 对应的分钟数,范围是从 0 到 59。
mysql> SELECT MINUTE('98-02-03 10:05:03');
-> 5
30.MONTH(date)
返回date 对应的月份,范围时从 1 到 12。
mysql> SELECT MONTH('1998-02-03');
-> 2
31.MONTHNAME(date)
返回date 对应月份的全名。
mysql> SELECT MONTHNAME('1998-02-05');
-> 'February '
32.NOW()
返回当前日期和时间值,其格式为 'YYYY-MM-DD HH:MM:SS' 或YYYYMMDDHHMMSS , 具体格式取决于该函数是否用
在字符串中或数字语境中。
mysql> SELECT NOW();
-> '1997-12-15 23:50:26'
33.PERIOD_ADD(P,N)
添加 N 个月至周期P (格式为YYMM 或YYYYMM),返回值的格式为 YYYYMM。注意周期参数 P 不是日期值。
mysql> SELECT PERIOD_ADD(9801,2);
-> 199803
34.PERIOD_DIFF(P1,P2)
返回周期P1和 P2 之间的月份数。P1 和P2 的格式应该为YYMM或YYYYMM。注意周期参数 P1和P2 不是日期值。
mysql> SELECT PERIOD_DIFF(9802,199703);
-> 11
35.QUARTER(date)
返回date 对应的一年中的季度值,范围是从 1到 4。
mysql> SELECT QUARTER('98-04-01');
-> 2
36.SECOND(time)
返回time 对应的秒数, 范围是从 0到59。
mysql> SELECT SECOND('10:05:03');
-> 3
37.SEC_TO_TIME(seconds)
返回被转化为小时、 分钟和秒数的seconds参数值, 其格式为 'HH:MM:SS' 或HHMMSS,具体格式根据该函数是否用在字符串或数字语境中而定。
mysql> SELECT SEC_TO_TIME(2378);
-> '00:39:38'
38.STR_TO_DATE(str,format)
这是DATE_FORMAT() 函数的倒转。它获取一个字符串 str 和一个格式字符串format。
若格式字符串包含日期和时间部分,则 STR_TO_DATE()返回一个 DATETIME 值,
若该字符串只包含日期部分或时间部分,则返回一个 DATE 或TIME值。
mysql> SELECT STR_TO_DATE('04/31/2004', '%m/%d/%Y');
-> '2004-04-31'
39.SUBDATE(date,INTERVAL expr type) SUBDATE(expr,days)
当被第二个参数的 INTERVAL型式调用时, SUBDATE()和DATE_SUB()的意义相同。
mysql> SELECT SUBDATE('1998-01-02', INTERVAL 31 DAY);
-> '1997-12-02'
40.SUBTIME(expr,expr2)
SUBTIME()从expr 中提取expr2 ,然后返回结果。expr 是一个时间或日期时间表达式,而xpr2 是一个时间表达式。
mysql> SELECT SUBTIME('1997-12-31 23:59:59.999999','1 1:1:1.000002');
-> '1997-12-30 22:58:58.999997'
41.SYSDATE()
返回当前日期和时间值,格式为'YYYY-MM-DD HH:MM:SS' 或YYYYMMDDHHMMSS, 具体格式根据函数是否用在字符串或数字语境而定。
在一个存储程序或触发器中, SYSDATE()返回其执行的时间, 而非存储成都或触发语句开始执行的时间。这个NOW()的运作有所不同。
42.TIME(expr)
提取一个时间或日期时间表达式的时间部分,并将其以字符串形式返回。
mysql> SELECT TIME('2003-12-31 01:02:03');
-> '01:02:03'
43.TIMEDIFF(expr,expr2)
TIMEDIFF() 返回起始时间 expr 和结束时间expr2 之间的时间。 expr 和expr2 为时间或 date-and-time
表达式,两个的类型必须一样。
mysql> SELECT TIMEDIFF('2000:01:01 00:00:00',
datediff是字符型函数-> '2000:01:01 00:00:00.000001');
-> '-00:00:00.000001'
44.TIMESTAMP(expr) , TIMESTAMP(expr,expr2)
对于一个单参数,该函数将日期或日期时间表达式 expr 作为日期时间值返回.
对于两个参数, 它将时间表达式 expr2 添加到日期或日期时间表达
式 expr 中,将theresult作为日期时间值返回。
mysql> SELECT TIMESTAMP('2003-12-31');
-> '2003-12-31 00:00:00'
mysql> SELECT TIMESTAMP('2003-12-31 12:00:00','12:00:00');
-
> '2004-01-01 00:00:00'
45.TIMESTAMPADD(interval,int_expr,datetime_expr)
将整型表达式int_expr 添加到日期或日期时间表达式 datetime_expr中。
46.TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2)
返回日期或日期时间表达式datetime_expr1 和datetime_expr2the 之间的整数差。
mysql> SELECT TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01');
-> 3
47.TIME_FORMAT(time,format)
其使用和 DATE_FORMAT()函数相同, 然而format 字符串可能仅会包含处理小时、分钟和秒的格式说明符。其它说明符产生一个NULL值或0。
48.TIME_TO_SEC(time)
返回已转化为秒的time参数。
mysql> SELECT TIME_TO_SEC('22:23:00');
-> 80580
49.TO_DAYS(date)
给定一个日期date, 返回一个天数 (从年份0开始的天数 )。
mysql> SELECT TO_DAYS('1997-10-07');
-> 729669
50.UNIX_TIMESTAMP(), UNIX_TIMESTAMP(date)
若无参数调用,则返回一个Unix timestamp ('1970-01-01 00:00:00' GMT 之后的秒数) 作为无符号整数。
51.UTC_DATE, UTC_DATE()
返回当前 UTC日期值,其格式为 'YYYY-MM-DD' 或 YYYYMMDD,具体格式取决于函数是否用在字符串或数字语境中。
mysql> SELECT UTC_DATE(), UTC_DATE() + 0;
-> '2003-08-14', 20030814
52.UTC_TIME, UTC_TIME()
返回当前 UTC 值,其格式为 'HH:MM:SS' 或HHMMSS,具体格式根据该函数是否用在字符串或数字语境而定。
53.UTC_TIMESTAMP, UTC_TIMESTAMP()
返回当前UTC日期及时间值,格式为 'YYYY-MM-DD HH:MM:SS' 或YYYYMMDDHHMMSS,具体格式根据该函数是否用在字符串或数字语境而定。
mysql> SELECT UTC_TIMESTAMP(), UTC_TIMESTAMP() + 0;
-> '2003-08-14 18:08:04', 20030814180804
54.WEEK(date[,mode])
该函数返回date 对应的星期数
55.WEEKDAY(date)
返回date (0 = 周一, 1 = 周二, ... 6 = 周日)对应的工作日索引 weekday index for
mysql> SELECT WEEKDAY('1998-02-03 22:23:00');
-> 1
56.WEEKOFYEAR(date)
将该日期的阳历周以数字形式返回,范围是从1到53。它是一个兼容度函数,相当于WEEK(date,3)。
mysql> SELECT WEEKOFYEAR('1998-02-20');
-> 8
57.YEAR(date)
返回date 对应的年份,范围是从1000到9999。
mysql> SELECT YEAR('98-02-03');
-
> 1998
58.YEARWEEK(date), YEARWEEK(date,start)
返回一个日期对应的年或周。start参数的工作同 start参数对 WEEK()的工作相同。
结果中的年份可以和该年的第一周和最后一周对应的日期参数有所不同。
mysql> SELECT YEARWEEK('1987-01-01');
-> 198653
mysql> select date_format(now(),'%Y');
+-------------------------+
| date_format(now(),'%Y') |
+-------------------------+
| 2009 |
+--------------------
-----+
1 row in set (0.00 sec)
扩展:
%Y:年
%c:月
%d:日
%H:小时
%i:分钟
%s:秒
mysql> select date_format(now(),'%Y-%c-%d %h:%i:%s');
+----------------------------------------+
| date_format(now(),'%Y-%c-%d %h:%i:%s') |
+----------------------------------------+
| 2009-8-07 06:59:40 |
+----------------------------------------+
1 row in set (0.00 sec)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论