原链接:
http://blog.sina.com.cn/s/blog_4acbd39c0100yc4d.html
收集了一下mysql的时间函数 方便以后使用
本文摘录网上各个优秀文章
获取
获取日期值
CURDATE()
CURRENT_DATE()
以'YYYY-MM-DD'或YYYYMMDD格式返回当前日期值(根据返回值所处上下文是字符串或数字)
mysql> select CURDATE();
-> '1997-12-15'
mysql> selec t CURDATE() 0;
-> 19971215
获取时间值
CURTIME()
CURRENT_TIME()
以'YYYY-MM-DD'或YYYYMMDD格式返回当前日期值(根据返回值所处上下文是字符串或数字)
mysql> select CURDATE();
-> '1997-12-15'
mysql> select CURDATE() 0;
-> 19971215
获取日期和时间值
NOW()
SYSDATE()
CURRENT_TIMESTAMP
CURRENT_TIMESTAMP()
以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回当前日期时间(根据返回值所处上下文是字符串或数字)
mysql> select NOW();
-> '1997-12-15 23:50:26'
mysql> select NOW() 0;
-> 19971215235026
获取unix时间戳 至今或某个时间的秒数
UNIX_TIMESTAMP()
UNIX_TIMESTAMP(date)
通过unix时间戳获取对应的日期
FROM_UNIXTIME(unix_timestamp,format)
以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回时间戳的值(根据返回值所处上下文是字符串或数字)
mysql> select FROM_UNIXTIME(875996580);
-> '1997-10-04 22:23:00'
mysql> select FROM_UNIXTIME(875996580) 0;
-> 19971004222300
select from_unixtime(1218169800, '%Y %D %M %h:%i:%s %x'); -- '2008 8th August 12:30:00 2008'
格式化返回的unix日期值
FROM_UNIXTIME(unix_timestamp,format)
mysql> select FROM_UNIXTIME(UNIX_TIMESTAMP(),'%Y %D %M %h:%i:%s %x');
-> '1997 23rd December 03:43:30 x'
获取uct时间日期函数
utc_date(), utc_time(), utc_timestamp()
mysql> select utc_timestamp(), utc_date(), utc_time(), now()
+---------------------+------------+------------+---------------------+
| utc_timestamp() | utc_date() | utc_time() | now() |
+---------------------+------------+------------+---------------------+
| 2008-08-08 14:47:11 | 2008-08-08 | 14:47:11 | 2008-08-08 22:47:11 |
因为我国位于东八时区,所以本地时间 = UTC 时间 + 8 小时。UTC 时间在业务涉及多个国家和地区的时候,非常有用。
获取月份中最后一天
last_day()
select last_day('2008-02-01'); -- 2008-02-29
select last_day('2008-08-08'); -- 2008-08-31
MySQL last_day() 函数非常有用,比如我想得到当前月份中有多少天,可以这样来计算:
mysql> select now(), day(last_day(now())) as days;
由一个date日期得到
由一个日期得到是星期几
DAYOFWEEK(date)
返回日期date是星期几(1=星期天,2=星期一,……7=星期六,ODBC标准)
mysql> select DAYOFWEEK('1998-02-03');
-> 3
或
WEEKDAY(date)
返回日期date是星期几(0=星期一,1=星期二,……6= 星期天)。
mysql> select WEEKDAY('1997-11-05');
-> 2
由一个日期得到是当月的第几天
DAYOFMONTH(date)
返回date是一月中的第几日(在1到31范围内)
mysql> select DAYOFMONTH('1998-02-03');
-> 3
由一个日期得到是当年的第几天
DAYOFYEAR(date)
返回date是一年中的第几日(在1到366范围内)
mysql> select DAYOFYEAR('1998-02-03');
-> 34
由一个日期得到是0年开始的第几天
TO_DAYS(date)
给出一个日期date,返回一个天数(从0年的天数)。
mysql> select TO_DAYS(950501);
-> 728779
由0年到现在的天数得出日期
FROM_DAYS(n)
mysql> select FROM_DAYS(729669);
-> '1997-10-07'
由一个日期得到是年、月、日的数值
YEAR(date)、MONTH(date)、DAY(date)
mysql> select MONTH('1998-02-03');
-> 2
由一个日期得到是月、日的英文名称
DAYNAME(date)、MONTH(date)
mysql> select MONTHNAME("1998-02-05");
-> 'February'
由一个日期得到是当年的第几季度
QUARTER(date)
mysql> select QUARTER('98-04-01');
-> 2
由一个日期得到是当年的第几周
WEEK(date,first)
返回date是一年的第几周(first默认值0,first取值1表示周一是周的开始,0从周日开始)
mysql> select WEEK('1998-02-20');
-> 7
有一个时间time可以得到
由一个时间得到小时、分钟、秒数
HOUR(time)、MINUTE(time)、SECOND(time)
把时间转换成秒数
TIME_TO_SEC(time)
返回time值有多少秒
mysql> select TIME_TO_SEC('22:23:00');
-> 80580
mysql> select TIME_TO_SEC('00:39:38');
-> 2378
吧秒数转换成日期
SEC_TO_TIME(seconds)
mysql> select SEC_TO_TIME(2378);
-> '00:39:38'
mysql> select SEC_TO_TIME(2378) 0;
-> 3938
比较日期和时间
取得两个日期之间相差的月份
PERIOD_DIFF(P1,P2)
返回在时期P1和P2之间月数(P1和P2的格式YYMM或YYYYMM)
mysql> select PERIOD_DIFF(9802,199703);
-> 11
计算日期和时间
DATE_ADD(date,INTERVAL expr type)
DATE_SUB(date,INTERVAL expr type)
ADDDATE(date,INTERVAL expr type)
SUBDATE(date,INTERVAL expr type)
TIME_ADD().....
对日期时间进行加减法运算
(ADDDATE()和SUBDATE()是DATE_ADD()和DATE_SUB()的同义词,也可以用运算符和-而不是函数
date是一个DATETIME或DATE值,expr对date进行加减法的一个表达式字符串type指明表达式expr应该如何被解释
[type值 含义 期望的expr格式]:
SECOND 秒 SECONDS
MINUTE 分钟 MINUTES
HOUR 时间 HOURS
DAY 天 DAYS
MONTH 月 MONTHS
YEAR 年 YEARS
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"
expr中允许任何标点做分隔符,如果所有是DATE值时结果是一个DATE值,否则结果是一个DATETIME值)
如果type关键词不完整,则MySQL从右端取值,DAY_SECOND因为缺少小时分钟等于MINUTE_SECOND)
如果增加MONTH、YEAR_MONTH或YEAR,天数大于结果月份的最大天数则使用最大天数)
mysql> SELECT "1997-12-31 23:59:59" INTERVAL 1 SECOND;
-> 1998-01-01 00:00:00
mysql> SELECT INTERVAL 1 DAY "1997-12-31";
-> 1998-01-01
mysql> SELECT "1998-01-01" - INTERVAL 1 SECOND;
-> 1997-12-31 23:59:59
mysql> SELECT DATE_ADD("1997-12-31 23:59:59",INTERVAL 1 SECOND);
-> 1998-01-01 00:00:00
mysql> SELECT DATE_ADD("1997-12-31 23:59:59",INTERVAL 1 DAY);
-> 1998-01-01 23:59:59
mysql> SELECT DATE_ADD("1997-12-31 23:59:59",INTERVAL "1:1" MINUTE_SECOND);
-> 1998-01-01 00:01:00
mysql> SELECT DATE_SUB("1998-01-01 00:00:00",INTERVAL "1 1:1:1" DAY_SECOND);
-> 1997-12-30 22:58:59
mysql> SELECT DATE_ADD("1998-01-01 00:00:00", INTERVAL "-1 10" DAY_HOUR);
-> 1997-12-30 14:00:00
mysql> SELECT DATE_SUB("1998-01-02", INTERVAL 31 DAY);
-> 1997-12-02
截取某个数字
EXTRACT(datetime)
mysql> SELECT EXTRACT(YEAR FROM "1999-07-02");
-> 1999
mysql> SELECT EXTRACT(YEAR_MONTH FROM "1999-07-02 01:02:03");
-> 199907
mysql> SELECT EXTRACT(DAY_MINUTE FROM "1999-07-02 01:02:03");
-> 20102
本文来自CSDN博客,转载请标明出处:http://www.cnblogs.com/zeroone/archive/2010/05/05/1727659.html
格式化日期和时间输入
TIME_FORMAT(time,format)
和DATE_FORMAT()类似,但TIME_FORMAT只处理小时、分钟和秒(其余符号产生一个NULL值或0)
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), 这里星期一是星期的第一天
%% 字符% )
mysql> select DATE_FORMAT('1997-10-04 22:23:00','%W %M %Y');
-> 'Saturday October 1997'
mysql> select DATE_FORMAT('1997-10-04 22:23:00','%H:%i:%s');
-> '22:23:00'
mysql> select DATE_FORMAT('1997-10-04 22:23:00','%D %y %a %d %m %b %j');
-> '4th 97 Sat 04 10 Oct 277'
mysql> select DATE_FORMAT('1997-10-04 22:23:00','%H %k %I %r %T %S %w');
-> '22 22 10 10:23:00 PM 22:23:00 00 6'
本文来自CSDN博客,转载请标明出处:http://www.cnblogs.com/zeroone/archive/2010/05/05/1727659.html
数据类型转换
STR_TO_DATE(str, format)
select str_to_date('08/09/2008', '%m/%d/%Y'); -- 2008-08-09
select str_to_date('08/09/08' , '%m/%d/%y'); -- 2008-08-09
select str_to_date('08.09.2008', '%m.%d.%Y'); -- 2008-08-09
select str_to_date('08:09:30', '%h:%i:%s'); -- 08:09:30
select str_to_date('08.09.2008 08:09:30', '%m.%d.%Y %h:%i:%s'); -- 2008-08-09 08:09:30
MySQL 拼凑日期、时间函数:
makdedate(year,dayofyear)
maketime(hour,minute,second)
select makedate(2001,31); -- '2001-01-31'
select makedate(2001,32); -- '2001-02-01'
select maketime(12,15,30); -- '12:15:30'
MySQL 时间戳(timestamp)转换、增、减函数:
timestamp(date) -- date to timestamp
timestamp(dt,time) -- dt + time
timestampadd(unit,interval,datetime_expr) --
timestampdiff(unit,datetime_expr1,datetime_expr2) --
请看示例部分:
select timestamp('2008-08-08'); -- 2008-08-08 00:00:00
select timestamp('2008-08-08 08:00:00', '01:01:01'); -- 2008-08-08 09:01:01
select timestamp('2008-08-08 08:00:00', '10 01:01:01'); -- 2008-08-18 09:01:01
select timestampadd(day, 1, '2008-08-08 08:00:00'); -- 2008-08-09 08:00:00
select date_add('2008-08-08 08:00:00', interval 1 day); -- 2008-08-09 08:00:00
MySQL timestampadd() 函数类似于 date_add()。
select timestampdiff(year,'2002-05-01','2001-01-01'); -- -1
select timestampdiff(day ,'2002-05-01','2001-01-01'); -- -485
select timestampdiff(hour,'2008-08-08 12:00:00','2008-08-08 00:00:00'); -- -12
select datediff('2008-08-08 12:00:00', '2008-08-01 00:00:00'); -- 7
MySQL timestampdiff() 函数就比 datediff() 功能强多了,datediff() 只能计算两个日期(date)之间相差的天数。
时区处理函数
convert_tz(dt,from_tz,to_tz)
select convert_tz('2008-08-08 12:00:00', '+08:00', '+00:00'); -- 2008-08-08 04:00:00
时区转换也可以通过 date_add, date_sub, timestampadd 来实现。
select date_add('2008-08-08 12:00:00', interval -8 hour); -- 2008-08-08 04:00:00
select date_sub('2008-08-08 12:00:00', interval 8 hour); -- 2008-08-08 04:00:00
select timestampadd(hour, -8, '2008-08-08 12:00:00'); -- 2008-08-08 04:00:00
其他
PERIOD_ADD(P,N)
增加N个月到时期P并返回(P的格式YYMM或YYYYMM)
mysql> select PERIOD_ADD(9801,2);
-> 199803
TO_DAYS(date)
返回日期date是西元0年至今多少天(不计算1582年以前)
mysql> select TO_DAYS(950501);
-> 728779
mysql> select TO_DAYS('1997-10-07');
-> 729669
FROM_DAYS(N)
给出西元0年至今多少天返回DATE值(不计算1582年以前)
mysql> select FROM_DAYS(729669);
-> '1997-10-07'
MySQL 日期、时间相减函数:
datediff(date1,date2)
timediff(time1,time2)
截取函数
1. 选取日期时间的各个部分:日期、时间、年、季度、月、日、小时、分钟、秒、微秒
set @dt = '2008-09-10 07:15:30.123456';
select date(@dt); -- 2008-09-10
select time(@dt); -- 07:15:30.123456
select year(@dt); -- 2008
select quarter(@dt); -- 3
select month(@dt); -- 9
select week(@dt); -- 36
select day(@dt); -- 10
select hour(@dt); -- 7
select minute(@dt); -- 15
select second(@dt); -- 30
select microsecond(@dt); -- 123456
select yearweek(@dt); -- 200836 返回的year()函数和week()函数,
2. MySQL Extract() 函数,可以上面实现类似的功能:
set @dt = '2008-09-10 07:15:30.123456';
select extract(year from @dt); -- 2008
select extract(quarter from @dt); -- 3
select extract(month from @dt); -- 9
select extract(week from @dt); -- 36
select extract(day from @dt); -- 10
select extract(hour from @dt); -- 7
select extract(minute from @dt); -- 15
select extract(second from @dt); -- 30
select extract(microsecond from @dt); -- 123456
select extract(year_month from @dt); -- 200809
select extract(day_hour from @dt); -- 1007
select extract(day_minute from @dt); -- 100715
select extract(day_second from @dt); -- 10071530
select extract(day_microsecond from @dt); -- 10071530123456
select extract(hour_minute from @dt); -- 715
select extract(hour_second from @dt); -- 71530
select extract(hour_microsecond from @dt); -- 71530123456
select extract(minute_second from @dt); -- 1530
select extract(minute_microsecond from @dt); -- 1530123456
select extract(second_microsecond from @dt); -- 30123456
MySQL Extract() 函数除了没有date(),time() 的功能外,其他功能一应具全。并且还具有选取‘day_microsecond’ 等功能。注意这里不是只选取 day 和 microsecond,而是从日期的 day 部分一直选取到 microsecond 部分。够强悍的吧!
MySQL Extract() 函数唯一不好的地方在于:你需要多敲几次键盘。
分享到:
相关推荐
<br>7.4.7 类型转换运算符 <br>7.4.8 控制流函数 <br>7.4.9 数学函数 <br>7.4.10 字符串函数 <br>7.4.11 日期和时间函数 <br>7.4.12 其他函数 <br>7.4.13 与GROUP BY子句一起使用的函数 <br>7.5 CREATE DATABASE ...
Mysql常用函数列表<br>CONCAT (string2 [,... ]) //连接字串<br>INSTR (string ,substring ) //返回substring首次在string中出现的位置,不存在返回0<br>……<br>数学类<br>ABS (number2 ) //绝对值<br>……<br>日期...
目录<br><br>前言<br>1. 一般信息<br>1.1. 关于本手册<br>1.2.... 日期和时间函数<br>12.6. MySQL使用什么日历?<br>12.7. 全文搜索功能<br>12.7.1. 布尔全文搜索<br>12.7.2. 全文搜索带查询扩展<br>12.7...
MYSQL高级特性 81<br>4.1 集合函数 82<br>4.1.1 行列计数 82<br>4.1.2统计字段值的数目 82<br>4.1.3 计算字段的平均值 83<br>4.1.4 计算字段值的和 84<br>4.1.5 计算字段值的极值 84<br>4.1.6 总结 86<br>4.2 操作...
<br>apache服务器专用函数库 <br>数组处理函数库 <br>拼写检查函数库 <br>BC 高精确度函数库 <br>历法函数库 <br>ClibPDF 函数库 <br>日期与时间函数库 <br>DBA 函数库 <br>dBase 格式资料表函数库 <br>dbm 类数据库...
MYSQL高级特性 81<br>4.1 集合函数 82<br>4.1.1 行列计数 82<br>4.1.2统计字段值的数目 82<br>4.1.3 计算字段的平均值 83<br>4.1.4 计算字段值的和 84<br>4.1.5 计算字段值的极值 84<br>4.1.6 总结 86<br>4.2 操作...
<br/>13.4 使用myisamchk进行崩溃恢复<br/>13.4.1 怎样检查表的出错 <br/>13.4.2 怎样修复表 <br/>13.4.3 表优化 <br/>13.5 日志文件维护 <br/>14 为MySQL增加新函数<br/>14.1 增加一个新的用户定义函数<br/>14.1.1 ...
第1章 PHP概述<br>第2章 安装配置Apache和PHP<br>第3章 PHP基础<br>第4章 函数<br>第5章 数组<br>第6章 面向对象的PHP<br>第7章 高级OOP特性<br>第8章 错误和异常处理<br>第9章 字符串和正则表达式<br>第10章 处理...
MYSQL 日期函数大全,供大家一起共同分享学习。
<br> 时间消耗:25 分钟左右。<br> <br> <br> 转换内容:<br> 用户、短消息、论坛、主题、帖子、附件、投票,用户密码无缝转换。<br> <br> <br> 文件列表:<br> dv2vb.php:转换主程序;<br> db_mysql....
修正updatesession 函数<br> 43. 修正子论坛发贴, 父论坛更新问题<br> 44. 修正smiles 判断问题<br> 45. 修正部分模版和语言包问题.<br> 46. 修正帖子“可打印版本”对于多附件支持错误!<br> 47. 修正用户组头衔...
修正updatesession 函数<br> 43. 修正子论坛发贴, 父论坛更新问题<br> 44. 修正smiles 判断问题<br> 45. 修正部分模版和语言包问题.<br> 46. 修正帖子“可打印版本”对于多附件支持错误!<br> 47. 修正用户组头衔...
修正updatesession 函数<br> 43. 修正子论坛发贴, 父论坛更新问题<br> 44. 修正smiles 判断问题<br> 45. 修正部分模版和语言包问题.<br> 46. 修正帖子“可打印版本”对于多附件支持错误!<br> 47. 修正用户组头衔...
8.0系列是为配合MySQL 8.0服务器设计的,带来了许多新特性,包括改进的性能、更好的安全特性、JSON增强、新的时间日期类型以及窗口函数等。此外,8.0系列也提供对旧版MySQL服务器(如5.5、5.6和5.7)的部分支持,但...
### MySQL常用函数详解 ...以上总结涵盖了MySQL中常用的数学、组合、聚合、字符串以及日期时间函数。这些函数广泛应用于各种场景,例如数据处理、报表生成等。熟练掌握这些函数有助于提高SQL查询效率及结果准确性。
MySQL 日期时间函数大全 在 MySQL 中,日期时间函数是非常重要的一部分,它们可以帮助我们对日期和时间进行各种操作。下面我们将对 MySQL 中的日期时间函数进行详细的讲解。 DAYOFWEEK(date) `DAYOFWEEK` 函数...
3. 日期和时间函数:如NOW()获取当前日期和时间,DATE_FORMAT()用于格式化日期和时间,DATE_ADD()和DATE_SUB()可以对日期进行加减操作。 4. 转换函数:如CAST()和CONVERT()用于在不同数据类型间转换,以及INET_ATON...
<br> <br> 3、提供了对所有数据库包括Oracle、Sybase、DB2、Informix、MySql、MS SQL SERVER、Access、FoxPro的SQL语句进行词法分析,对关键字、函数等显示以不同的颜色,使用户更方便地发现输入SQL语句的错误,同时...
MySQL 数据库函数大全是一份详细的函数大全,涵盖了字符串、数字、日期和时间等多个方面的函数。本文档将对其中的一些重要函数进行详细的解释。 一、字符串函数 ASCII(str) 函数返回字符串 str 的最左面字符的 ...
mysql 时间函数 mysql 时间函数是 mysql 中用于处理日期和时间的函数,下面将详细介绍这些函数: 1. 获得当前日期时间函数: mysql 中有多种函数可以获得当前的日期和时间,包括 now()、current_timestamp()、...