<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://www.jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://www.jackxiang.com/post//</link>
<title><![CDATA[Mysql日期函数，时间函数使用的总结,以及时间加减运算]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Wed, 30 Dec 2009 02:52:34 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	select timediff(&#039;23:40:00&#039;, &#039; 18:30:00&#039;); -- 两时间相减<br/>SELECT&nbsp;&nbsp; substring( timediff(&#039;23:40:00&#039;, &#039; 18:30:00&#039;),1,5) ----“05：10”相减返回小时：分钟<br/><br/>select datediff(&#039;2008-08-08&#039;, &#039;2008-08-01&#039;); -- 7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-----两日期相减<br/>select TO_DAYS(&#039;2008-09-08&#039;)-TO_DAYS(&#039;2008-08-08&#039;)&nbsp;&nbsp;&nbsp;&nbsp; -----两日期相减<br/><br/>SELECT&nbsp;&nbsp; substring( &#039;2009-06-17 10:00:00&#039;,&nbsp;&nbsp; 1,&nbsp;&nbsp; 10&nbsp;&nbsp; )&nbsp;&nbsp; ----从datetime中提取“日期”<br/><br/><br/>（********************* 时间戳是从1970年1月1日开始到目标时间所经过的秒数. <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可以进行两个datetime时间间隔的运算******************************）<br/><br/><br/><br/><br/><br/><br/>一、MySQL 获得当前日期时间 函数<br/>1.1 获得当前日期+时间（date + time）函数：now()<br/>mysql&gt; select now();<br/><br/>+---------------------+<br/>&amp;#124; now() &amp;#124;<br/>+---------------------+<br/>&amp;#124; 2008-08-08 22:20:46 &amp;#124;<br/>+---------------------+<br/><br/>除了 now() 函数能获得当前的日期时间外，MySQL 中还有下面的函数：<br/>current_timestamp()<br/>,current_timestamp<br/>,localtime()<br/>,localtime<br/>,localtimestamp -- (v4.0.6)<br/>,localtimestamp() -- (v4.0.6)<br/><br/>这些日期时间函数，都等同于 now()。鉴于 now() 函数简短易记，建议总是使用 now() 来替代上面列出的函数。<br/>1.2 获得当前日期+时间（date + time）函数：sysdate()<br/>sysdate() 日期时间函数跟 now() 类似，不同之处在于：now() 在执行开始时值就得到了， sysdate() 在函数执行时动态得到值。看下面的例子就明白了：<br/>mysql&gt; select now(), sleep(3), now();<br/><br/>+---------------------+----------+---------------------+<br/>&amp;#124; now() &amp;#124; sleep(3) &amp;#124; now() &amp;#124;<br/>+---------------------+----------+---------------------+<br/>&amp;#124; 2008-08-08 22:28:21 &amp;#124; 0 &amp;#124; 2008-08-08 22:28:21 &amp;#124;<br/>+---------------------+----------+---------------------+<br/><br/>mysql&gt; select sysdate(), sleep(3), sysdate();<br/><br/>+---------------------+----------+---------------------+<br/>&amp;#124; sysdate() &amp;#124; sleep(3) &amp;#124; sysdate() &amp;#124;<br/>+---------------------+----------+---------------------+<br/>&amp;#124; 2008-08-08 22:28:41 &amp;#124; 0 &amp;#124; 2008-08-08 22:28:44 &amp;#124;<br/>+---------------------+----------+---------------------+<br/><br/>可以看到，虽然中途 sleep 3 秒，但 now() 函数两次的时间值是相同的； sysdate() 函数两次得到的时间值相差 3 秒。MySQL Manual 中是这样描述 sysdate() 的：Return the time at which the function executes。<br/>sysdate() 日期时间函数，一般情况下很少用到。<br/>2. 获得当前日期（date）函数：curdate()<br/>mysql&gt; select curdate();<br/><br/>+------------+<br/>&amp;#124; curdate() &amp;#124;<br/>+------------+<br/>&amp;#124; 2008-08-08 &amp;#124;<br/>+------------+<br/><br/>其中，下面的两个日期函数等同于 curdate()：<br/>current_date()<br/>,current_date<br/><br/>3. 获得当前时间（time）函数：curtime()<br/>mysql&gt; select curtime();<br/><br/>+-----------+<br/>&amp;#124; curtime() &amp;#124;<br/>+-----------+<br/>&amp;#124; 22:41:30 &amp;#124;<br/>+-----------+<br/><br/>其中，下面的两个时间函数等同于 curtime()：<br/>current_time()<br/>,current_time<br/><br/>4. 获得当前 UTC 日期时间函数：utc_date(), utc_time(), utc_timestamp()<br/>mysql&gt; select utc_timestamp(), utc_date(), utc_time(), now()<br/><br/>+---------------------+------------+------------+---------------------+<br/>&amp;#124; utc_timestamp() &amp;#124; utc_date() &amp;#124; utc_time() &amp;#124; now() &amp;#124;<br/>+---------------------+------------+------------+---------------------+<br/>&amp;#124; 2008-08-08 14:47:11 &amp;#124; 2008-08-08 &amp;#124; 14:47:11 &amp;#124; 2008-08-08 22:47:11 &amp;#124;<br/>+---------------------+------------+------------+---------------------+<br/><br/>因为我国位于东八时区，所以本地时间 = UTC 时间 + 8 小时。UTC 时间在业务涉及多个国家和地区的时候，非常有用。<br/><br/>二、MySQL 日期时间 Extract（选取） 函数。<br/>1. 选取日期时间的各个部分：日期、时间、年、季度、月、日、小时、分钟、秒、微秒<br/>set @dt = &#039;2008-09-10 07:15:30.123456&#039;;<br/><br/>select date(@dt); -- 2008-09-10<br/>select time(@dt); -- 07:15:30.123456<br/>select year(@dt); -- 2008<br/>select quarter(@dt); -- 3<br/>select month(@dt); -- 9<br/>select week(@dt); -- 36<br/>select day(@dt); -- 10<br/>select hour(@dt); -- 7<br/>select minute(@dt); -- 15<br/>select second(@dt); -- 30<br/>select microsecond(@dt); -- 123456<br/><br/>2. MySQL Extract() 函数，可以上面实现类似的功能：<br/>set @dt = &#039;2008-09-10 07:15:30.123456&#039;;<br/><br/>select extract(year from @dt); -- 2008<br/>select extract(quarter from @dt); -- 3<br/>select extract(month from @dt); -- 9<br/>select extract(week from @dt); -- 36<br/>select extract(day from @dt); -- 10<br/>select extract(hour from @dt); -- 7<br/>select extract(minute from @dt); -- 15<br/>select extract(second from @dt); -- 30<br/>select extract(microsecond from @dt); -- 123456<br/><br/>select extract(year_month from @dt); -- 200809<br/>select extract(day_hour from @dt); -- 1007<br/>select extract(day_minute from @dt); -- 100715<br/>select extract(day_second from @dt); -- 10071530<br/>select extract(day_microsecond from @dt); -- 10071530123456<br/>select extract(hour_minute from @dt); -- 715<br/>select extract(hour_second from @dt); -- 71530<br/>select extract(hour_microsecond from @dt); -- 71530123456<br/>select extract(minute_second from @dt); -- 1530<br/>select extract(minute_microsecond from @dt); -- 1530123456<br/>select extract(second_microsecond from @dt); -- 30123456<br/><br/>MySQL Extract() 函数除了没有date(),time() 的功能外，其他功能一应具全。并且还具有选取‘day_microsecond’ 等功能。注意这里不是只选取 day 和 microsecond，而是从日期的 day 部分一直选取到 microsecond 部分。够强悍的吧！<br/>MySQL Extract() 函数唯一不好的地方在于：你需要多敲几次键盘。<br/>3. MySQL dayof... 函数：dayofweek(), dayofmonth(), dayofyear()<br/>分别返回日期参数，在一周、一月、一年中的位置。<br/>set @dt = &#039;2008-08-08&#039;;<br/><br/>select dayofweek(@dt); -- 6<br/>select dayofmonth(@dt); -- 8<br/>select dayofyear(@dt); -- 221<br/><br/>日期 &#039;2008-08-08&#039; 是一周中的第 6 天（1 = Sunday, 2 = Monday, ..., 7 = Saturday）；一月中的第 8 天；一年中的第 221 天。<br/>4. MySQL week... 函数：week(), weekofyear(), dayofweek(), weekday(), yearweek()<br/>set @dt = &#039;2008-08-08&#039;;<br/><br/>select week(@dt); -- 31<br/>select week(@dt,3); -- 32<br/>select weekofyear(@dt); -- 32<br/><br/>select dayofweek(@dt); -- 6<br/>select weekday(@dt); -- 4<br/><br/>select yearweek(@dt); -- 200831<br/><br/>MySQL week() 函数，可以有两个参数，具体可看手册。 weekofyear() 和 week() 一样，都是计算“某天”是位于一年中的第几周。 weekofyear(@dt) 等价于 week(@dt,3)。<br/>MySQL weekday() 函数和 dayofweek() 类似，都是返回“某天”在一周中的位置。不同点在于参考的标准， weekday：(0 = Monday, 1 = Tuesday, ..., 6 = Sunday)； dayofweek：（1 = Sunday, 2 = Monday, ..., 7 = Saturday）<br/>MySQL yearweek() 函数，返回 year(2008) + week 位置(31)。<br/>5. MySQL 返回星期和月份名称函数：dayname(), monthname()<br/>set @dt = &#039;2008-08-08&#039;;<br/><br/>select dayname(@dt); -- Friday<br/>select monthname(@dt); -- August<br/><br/>思考，如何返回中文的名称呢？<br/>6. MySQL last_day() 函数：返回月份中的最后一天。<br/>select last_day(&#039;2008-02-01&#039;); -- 2008-02-29<br/>select last_day(&#039;2008-08-08&#039;); -- 2008-08-31<br/><br/>MySQL last_day() 函数非常有用，比如我想得到当前月份中有多少天，可以这样来计算：<br/>mysql&gt; select now(), day(last_day(now())) as days;<br/><br/>+---------------------+------+<br/>&amp;#124; now() &amp;#124; days &amp;#124;<br/>+---------------------+------+<br/>&amp;#124; 2008-08-09 11:45:45 &amp;#124; 31 &amp;#124;<br/>+---------------------+------+<br/><br/>三、MySQL 日期时间计算函数<br/>1. MySQL 为日期增加一个时间间隔：date_add()<br/>set @dt = now();<br/><br/>select date_add(@dt, interval 1 day); -- add 1 day<br/>select date_add(@dt, interval 1 hour); -- add 1 hour<br/>select date_add(@dt, interval 1 minute); -- ...<br/>select date_add(@dt, interval 1 second);<br/>select date_add(@dt, interval 1 microsecond);<br/>select date_add(@dt, interval 1 week);<br/>select date_add(@dt, interval 1 month);<br/>select date_add(@dt, interval 1 quarter);<br/>select date_add(@dt, interval 1 year);<br/><br/>select date_add(@dt, interval -1 day); -- sub 1 day<br/><br/>MySQL adddate(), addtime()函数，可以用 date_add() 来替代。下面是 date_add() 实现 addtime() 功能示例：<br/>mysql&gt; set @dt = &#039;2008-08-09 12:12:33&#039;;<br/><br/>mysql&gt;<br/>mysql&gt; select date_add(@dt, interval &#039;01:15:30&#039; hour_second);<br/><br/>+------------------------------------------------+<br/>&amp;#124; date_add(@dt, interval &#039;01:15:30&#039; hour_second) &amp;#124;<br/>+------------------------------------------------+<br/>&amp;#124; 2008-08-09 13:28:03 &amp;#124;<br/>+------------------------------------------------+<br/><br/>mysql&gt; select date_add(@dt, interval &#039;1 01:15:30&#039; day_second);<br/><br/>+-------------------------------------------------+<br/>&amp;#124; date_add(@dt, interval &#039;1 01:15:30&#039; day_second) &amp;#124;<br/>+-------------------------------------------------+<br/>&amp;#124; 2008-08-10 13:28:03 &amp;#124;<br/>+-------------------------------------------------+<br/><br/>date_add() 函数，分别为 @dt 增加了“1小时 15分 30秒” 和 “1天 1小时 15分 30秒”。建议：总是使用 date_add() 日期时间函数来替代 adddate(), addtime()。<br/>2. MySQL 为日期减去一个时间间隔：date_sub()<br/>mysql&gt; select date_sub(&#039;1998-01-01 00:00:00&#039;, interval &#039;1 1:1:1&#039; day_second);<br/><br/>+----------------------------------------------------------------+<br/>&amp;#124; date_sub(&#039;1998-01-01 00:00:00&#039;, interval &#039;1 1:1:1&#039; day_second) &amp;#124;<br/>+----------------------------------------------------------------+<br/>&amp;#124; 1997-12-30 22:58:59 &amp;#124;<br/>+----------------------------------------------------------------+<br/><br/>MySQL date_sub() 日期时间函数 和 date_add() 用法一致，不再赘述。另外，MySQL 中还有两个函数 subdate(), subtime()，建议，用 date_sub() 来替代。<br/>3. MySQL 另类日期函数：period_add(P,N), period_diff(P1,P2)<br/>函数参数“P” 的格式为“YYYYMM” 或者 “YYMM”，第二个参数“N” 表示增加或减去 N month（月）。<br/>MySQL period_add(P,N)：日期加/减去N月。<br/>mysql&gt; select period_add(200808,2), period_add(20080808,-2)<br/><br/>+----------------------+-------------------------+<br/>&amp;#124; period_add(200808,2) &amp;#124; period_add(20080808,-2) &amp;#124;<br/>+----------------------+-------------------------+<br/>&amp;#124; 200810 &amp;#124; 20080806 &amp;#124;<br/>+----------------------+-------------------------+<br/><br/>MySQL period_diff(P1,P2)：日期 P1-P2，返回 N 个月。<br/>mysql&gt; select period_diff(200808, 200801);<br/><br/>+-----------------------------+<br/>&amp;#124; period_diff(200808, 200801) &amp;#124;<br/>+-----------------------------+<br/>&amp;#124; 7 &amp;#124;<br/>+-----------------------------+<br/><br/>在 MySQL 中，这两个日期函数，一般情况下很少用到。<br/>4. MySQL 日期、时间相减函数：datediff(date1,date2), timediff(time1,time2)<br/>MySQL datediff(date1,date2)：两个日期相减 date1 - date2，返回天数。<br/>select datediff(&#039;2008-08-08&#039;, &#039;2008-08-01&#039;); -- 7<br/>select datediff(&#039;2008-08-01&#039;, &#039;2008-08-08&#039;); -- -7<br/><br/>MySQL timediff(time1,time2)：两个日期相减 time1 - time2，返回 time 差值。<br/>select timediff(&#039;2008-08-08 08:08:08&#039;, &#039;2008-08-08 00:00:00&#039;); -- 08:08:08<br/>select timediff(&#039;08:08:08&#039;, &#039;00:00:00&#039;); -- 08:08:08<br/><br/>注意：timediff(time1,time2) 函数的两个参数类型必须相同。<br/><br/>四、MySQL 日期转换函数、时间转换函数<br/>1. MySQL （时间、秒）转换函数：time_to_sec(time), sec_to_time(seconds)<br/>select time_to_sec(&#039;01:00:05&#039;); -- 3605<br/>select sec_to_time(3605); -- &#039;01:00:05&#039;<br/><br/>2. MySQL （日期、天数）转换函数：to_days(date), from_days(days)<br/>select to_days(&#039;0000-00-00&#039;); -- 0<br/>select to_days(&#039;2008-08-08&#039;); -- 733627<br/><br/>select from_days(0); -- &#039;0000-00-00&#039;<br/>select from_days(733627); -- &#039;2008-08-08&#039;<br/><br/>3. MySQL Str to Date （字符串转换为日期）函数：str_to_date(str, format)<br/>select str_to_date(&#039;08/09/2008&#039;, &#039;%m/%d/%Y&#039;); -- 2008-08-09<br/>select str_to_date(&#039;08/09/08&#039; , &#039;%m/%d/%y&#039;); -- 2008-08-09<br/>select str_to_date(&#039;08.09.2008&#039;, &#039;%m.%d.%Y&#039;); -- 2008-08-09<br/>select str_to_date(&#039;08:09:30&#039;, &#039;%h:%i:%s&#039;); -- 08:09:30<br/>select str_to_date(&#039;08.09.2008 08:09:30&#039;, &#039;%m.%d.%Y %h:%i:%s&#039;); -- 2008-08-09 08:09:30<br/><br/>可以看到，str_to_date(str,format) 转换函数，可以把一些杂乱无章的字符串转换为日期格式。另外，它也可以转换为时间。“format” 可以参看 MySQL 手册。<br/>4. MySQL Date/Time to Str（日期/时间转换为字符串）函数：date_format(date,format), time_format(time,format)<br/>mysql&gt; select date_format(&#039;2008-08-08 22:23:00&#039;, &#039;%W %M %Y&#039;);<br/><br/>+------------------------------------------------+<br/>&amp;#124; date_format(&#039;2008-08-08 22:23:00&#039;, &#039;%W %M %Y&#039;) &amp;#124;<br/>+------------------------------------------------+<br/>&amp;#124; Friday August 2008 &amp;#124;<br/>+------------------------------------------------+<br/><br/>mysql&gt; select date_format(&#039;2008-08-08 22:23:01&#039;, &#039;%Y%m%d%H%i%s&#039;);<br/><br/>+----------------------------------------------------+<br/>&amp;#124; date_format(&#039;2008-08-08 22:23:01&#039;, &#039;%Y%m%d%H%i%s&#039;) &amp;#124;<br/>+----------------------------------------------------+<br/>&amp;#124; 20080808222301 &amp;#124;<br/>+----------------------------------------------------+<br/><br/>mysql&gt; select time_format(&#039;22:23:01&#039;, &#039;%H.%i.%s&#039;);<br/><br/>+-------------------------------------+<br/>&amp;#124; time_format(&#039;22:23:01&#039;, &#039;%H.%i.%s&#039;) &amp;#124;<br/>+-------------------------------------+<br/>&amp;#124; 22.23.01 &amp;#124;<br/>+-------------------------------------+<br/><br/>MySQL 日期、时间转换函数：date_format(date,format), time_format(time,format) 能够把一个日期/时间转换成各种各样的字符串格式。它是 str_to_date(str,format) 函数的 一个逆转换。<br/>5. MySQL 获得国家地区时间格式函数：get_format()<br/>MySQL get_format() 语法：<br/>get_format(date&amp;#124;time&amp;#124;datetime, &#039;eur&#039;&amp;#124;&#039;usa&#039;&amp;#124;&#039;jis&#039;&amp;#124;&#039;iso&#039;&amp;#124;&#039;internal&#039;<br/><br/>MySQL get_format() 用法的全部示例：<br/>select get_format(date,&#039;usa&#039;) ; -- &#039;%m.%d.%Y&#039;<br/>select get_format(date,&#039;jis&#039;) ; -- &#039;%Y-%m-%d&#039;<br/>select get_format(date,&#039;iso&#039;) ; -- &#039;%Y-%m-%d&#039;<br/>select get_format(date,&#039;eur&#039;) ; -- &#039;%d.%m.%Y&#039;<br/>select get_format(date,&#039;internal&#039;) ; -- &#039;%Y%m%d&#039;<br/>select get_format(datetime,&#039;usa&#039;) ; -- &#039;%Y-%m-%d %H.%i.%s&#039;<br/>select get_format(datetime,&#039;jis&#039;) ; -- &#039;%Y-%m-%d %H:%i:%s&#039;<br/>select get_format(datetime,&#039;iso&#039;) ; -- &#039;%Y-%m-%d %H:%i:%s&#039;<br/>select get_format(datetime,&#039;eur&#039;) ; -- &#039;%Y-%m-%d %H.%i.%s&#039;<br/>select get_format(datetime,&#039;internal&#039;) ; -- &#039;%Y%m%d%H%i%s&#039;<br/>select get_format(time,&#039;usa&#039;) ; -- &#039;%h:%i:%s %p&#039;<br/>select get_format(time,&#039;jis&#039;) ; -- &#039;%H:%i:%s&#039;<br/>select get_format(time,&#039;iso&#039;) ; -- &#039;%H:%i:%s&#039;<br/>select get_format(time,&#039;eur&#039;) ; -- &#039;%H.%i.%s&#039;<br/>select get_format(time,&#039;internal&#039;) ; -- &#039;%H%i%s&#039;<br/><br/>MySQL get_format() 函数在实际中用到机会的比较少。<br/>6. MySQL 拼凑日期、时间函数：makdedate(year,dayofyear), maketime(hour,minute,second)<br/>select makedate(2001,31); -- &#039;2001-01-31&#039;<br/>select makedate(2001,32); -- &#039;2001-02-01&#039;<br/><br/>select maketime(12,15,30); -- &#039;12:15:30&#039;<br/><br/>五、MySQL 时间戳（Timestamp）函数<br/>1. MySQL 获得当前时间戳函数：current_timestamp, current_timestamp()<br/>mysql&gt; select current_timestamp, current_timestamp();<br/><br/>+---------------------+---------------------+<br/>&amp;#124; current_timestamp &amp;#124; current_timestamp() &amp;#124;<br/>+---------------------+---------------------+<br/>&amp;#124; 2008-08-09 23:22:24 &amp;#124; 2008-08-09 23:22:24 &amp;#124;<br/>+---------------------+---------------------+<br/><br/>2. MySQL （Unix 时间戳、日期）转换函数：<br/>unix_timestamp(),<br/>unix_timestamp(date),<br/>from_unixtime(unix_timestamp),<br/>from_unixtime(unix_timestamp,format)<br/><br/>下面是示例：<br/>select unix_timestamp(); -- 1218290027<br/>select unix_timestamp(&#039;2008-08-08&#039;); -- 1218124800<br/>select unix_timestamp(&#039;2008-08-08 12:30:00&#039;); -- 1218169800<br/><br/>select from_unixtime(1218290027); -- &#039;2008-08-09 21:53:47&#039;<br/>select from_unixtime(1218124800); -- &#039;2008-08-08 00:00:00&#039;<br/>select from_unixtime(1218169800); -- &#039;2008-08-08 12:30:00&#039;<br/><br/>select from_unixtime(1218169800, &#039;%Y %D %M %h:%i:%s %x&#039;); -- &#039;2008 8th August 12:30:00 2008&#039;<br/><br/>3. MySQL 时间戳（timestamp）转换、增、减函数：<br/>timestamp(date) -- date to timestamp<br/>timestamp(dt,time) -- dt + time<br/>timestampadd(unit,interval,datetime_expr) --<br/>timestampdiff(unit,datetime_expr1,datetime_expr2) --<br/><br/>请看示例部分：<br/>select timestamp(&#039;2008-08-08&#039;); -- 2008-08-08 00:00:00<br/>select timestamp(&#039;2008-08-08 08:00:00&#039;, &#039;01:01:01&#039;); -- 2008-08-08 09:01:01<br/>select timestamp(&#039;2008-08-08 08:00:00&#039;, &#039;10 01:01:01&#039;); -- 2008-08-18 09:01:01<br/><br/>select timestampadd(day, 1, &#039;2008-08-08 08:00:00&#039;); -- 2008-08-09 08:00:00<br/>select date_add(&#039;2008-08-08 08:00:00&#039;, interval 1 day); -- 2008-08-09 08:00:00<br/><br/>MySQL timestampadd() 函数类似于 date_add()。<br/>select timestampdiff(year,&#039;2002-05-01&#039;,&#039;2001-01-01&#039;); -- -1<br/>select timestampdiff(day ,&#039;2002-05-01&#039;,&#039;2001-01-01&#039;); -- -485<br/>select timestampdiff(hour,&#039;2008-08-08 12:00:00&#039;,&#039;2008-08-08 00:00:00&#039;); -- -12<br/><br/>select datediff(&#039;2008-08-08 12:00:00&#039;, &#039;2008-08-01 00:00:00&#039;); -- 7<br/><br/>MySQL timestampdiff() 函数就比 datediff() 功能强多了，datediff() 只能计算两个日期（date）之间相差的天数。<br/><br/>六、MySQL 时区（timezone）转换函数<br/>convert_tz(dt,from_tz,to_tz)<br/><br/>select convert_tz(&#039;2008-08-08 12:00:00&#039;, &#039;+08:00&#039;, &#039;+00:00&#039;); -- 2008-08-08 04:00:00<br/><br/>时区转换也可以通过 date_add, date_sub, timestampadd 来实现。<br/>select date_add(&#039;2008-08-08 12:00:00&#039;, interval -8 hour); -- 2008-08-08 04:00:00<br/>select date_sub(&#039;2008-08-08 12:00:00&#039;, interval 8 hour); -- 2008-08-08 04:00:00<br/>select timestampadd(hour, -8, &#039;2008-08-08 12:00:00&#039;); -- 2008-08-08 04:00:00<br/><br/><br/>七<br/>MySql日期函数<br/><br/>Name &nbsp;&nbsp;Description<br/>ADDDATE()(v4.1.1) &nbsp;&nbsp;Add time values (intervals) to a date value<br/>ADDTIME()(v4.1.1) &nbsp;&nbsp;Add time<br/>CONVERT_TZ()(v4.1.3) &nbsp;&nbsp;Convert from one timezone to another<br/>CURDATE() &nbsp;&nbsp;Return the current date<br/>CURRENT_DATE(), CURRENT_DATE &nbsp;&nbsp;Synonyms for CURDATE()<br/>CURRENT_TIME(), CURRENT_TIME &nbsp;&nbsp;Synonyms for CURTIME()<br/>CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP &nbsp;&nbsp;Synonyms for NOW()<br/>CURTIME() &nbsp;&nbsp;Return the current time<br/>DATE_ADD() &nbsp;&nbsp;Add time values (intervals) to a date value<br/>DATE_FORMAT() &nbsp;&nbsp;Format date as specified<br/>DATE_SUB() &nbsp;&nbsp;Subtract two dates<br/>DATE()(v4.1.1) &nbsp;&nbsp;Extract the date part of a date or datetime expression<br/>DATEDIFF()(v4.1.1) &nbsp;&nbsp;Subtract two dates<br/>DAY()(v4.1.1) &nbsp;&nbsp;Synonym for DAYOFMONTH()<br/>DAYNAME()(v4.1.21) &nbsp;&nbsp;Return the name of the weekday<br/>DAYOFMONTH() &nbsp;&nbsp;Return the day of the month (0-31)<br/>DAYOFWEEK() &nbsp;&nbsp;Return the weekday index of the argument<br/>DAYOFYEAR() &nbsp;&nbsp;Return the day of the year (1-366)<br/>EXTRACT &nbsp;&nbsp;Extract part of a date<br/>FROM_DAYS() &nbsp;&nbsp;Convert a day number to a date<br/>FROM_UNIXTIME() &nbsp;&nbsp;Format UNIX timestamp as a date<br/>GET_FORMAT()(v4.1.1) &nbsp;&nbsp;Return a date format string<br/>HOUR() &nbsp;&nbsp;Extract the hour<br/>LAST_DAY(v4.1.1) &nbsp;&nbsp;Return the last day of the month for the argument<br/>LOCALTIME(), LOCALTIME &nbsp;&nbsp;Synonym for NOW()<br/>LOCALTIMESTAMP, LOCALTIMESTAMP()(v4.0.6) &nbsp;&nbsp;Synonym for NOW()<br/>MAKEDATE()(v4.1.1) &nbsp;&nbsp;Create a date from the year and day of year<br/>MAKETIME(v4.1.1) &nbsp;&nbsp;MAKETIME()<br/>MICROSECOND()(v4.1.1) &nbsp;&nbsp;Return the microseconds from argument<br/>MINUTE() &nbsp;&nbsp;Return the minute from the argument<br/>MONTH() &nbsp;&nbsp;Return the month from the date passed<br/>MONTHNAME()(v4.1.21) &nbsp;&nbsp;Return the name of the month<br/>NOW() &nbsp;&nbsp;Return the current date and time<br/>PERIOD_ADD() &nbsp;&nbsp;Add a period to a year-month<br/>PERIOD_DIFF() &nbsp;&nbsp;Return the number of months between periods<br/>QUARTER() &nbsp;&nbsp;Return the quarter from a date argument<br/>SEC_TO_TIME() &nbsp;&nbsp;Converts seconds to &#039;HH:MM:SS&#039; format<br/>SECOND() &nbsp;&nbsp;Return the second (0-59)<br/>STR_TO_DATE()(v4.1.1) &nbsp;&nbsp;Convert a string to a date<br/>SUBDATE() &nbsp;&nbsp;A synonym for DATE_SUB() when invoked with three arguments<br/>SUBTIME()(v4.1.1) &nbsp;&nbsp;Subtract times<br/>SYSDATE() &nbsp;&nbsp;Return the time at which the function executes<br/>TIME_FORMAT() &nbsp;&nbsp;Format as time<br/>TIME_TO_SEC() &nbsp;&nbsp;Return the argument converted to seconds<br/>TIME()(v4.1.1) &nbsp;&nbsp;Extract the time portion of the expression passed<br/>TIMEDIFF()(v4.1.1) &nbsp;&nbsp;Subtract time<br/>TIMESTAMP()(v4.1.1) &nbsp;&nbsp;With a single argument, this function returns the date or datetime expression; with two arguments, the sum of the arguments<br/>TO_DAYS() &nbsp;&nbsp;Return the date argument converted to days<br/>UNIX_TIMESTAMP() &nbsp;&nbsp;Return a UNIX timestamp<br/>UTC_DATE()(v4.1.1) &nbsp;&nbsp;Return the current UTC date<br/>UTC_TIME()(v4.1.1) &nbsp;&nbsp;Return the current UTC time<br/>UTC_TIMESTAMP()(v4.1.1) &nbsp;&nbsp;Return the current UTC date and time<br/>WEEK() &nbsp;&nbsp;Return the week number<br/>WEEKDAY() &nbsp;&nbsp;Return the weekday index<br/>WEEKOFYEAR()(v4.1.1) &nbsp;&nbsp;Return the calendar week of the date (0-53)<br/>YEAR() &nbsp;&nbsp;Return the year<br/>YEARWEEK() &nbsp;&nbsp;Return the year and week
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] Mysql日期函数，时间函数使用的总结,以及时间加减运算]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>