热门话题

Php 研究室

mysql日期函数2    作者:xieaotian发表于2009-10-10 17:54:45

	   

MySQL 允许任何expr 格式中的标点分隔符。表中所显示的是建议的 分隔符。若 date 参数是一个 DATE 值,而你的计算只会包括 YEAR、MONTH和DAY部分(即, 没有时间部分), 其结果是一个DATE 值。否则,结果将是一个 DATETIME值。

若位于另一端的表达式是一个日期或日期时间值 , 则INTERVAL expr type只允许在 + 操作符的两端。对于 –操作符, INTERVAL expr type 只允许在其右端,原因是从一个时间间隔中提取一个日期或日期时间值是毫无意义的。 (见下面的例子)。

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'

mysql> SELECT DATE_ADD('1992-12-31 23:59:59.000002',

-> INTERVAL '1.999999' SECOND_MICROSECOND);

-> '1993-01-01 00:00:01.000001'

若你指定了一个过于短的时间间隔值 (不包括type 关键词所预期的所有时间间隔部分), MySQL 假定你已经省去了时间间隔值的最左部分。 例如,你指定了一种类型的DAY_SECOND, expr 的值预期应当具有天、 小时、分钟和秒部分。若你指定了一个类似 '1:10'的值, MySQL 假定天和小时部分不存在,那么这个值代表分和秒。换言之, '1:10' DAY_SECOND 被解释为相当于 '1:10' MINUTE_SECOND。这相当于 MySQL将TIME 值解释为所耗费的时间而不是日时的解释方式。

假如你对一个日期值添加或减去一些含有时间部分的内容,则结果自动转化为一个日期时间值:

mysql> SELECT DATE_ADD('1999-01-01', INTERVAL 1 DAY);

-> '1999-01-02'

mysql> SELECT DATE_ADD('1999-01-01', INTERVAL 1 HOUR);

-> '1999-01-01 01:00:00'

假如你使用了格式严重错误的日期,则结果为 NULL。假如你添加了 MONTH、YEAR_MONTH或YEAR ,而结果日期中有一天的日期大于添加的月份的日期最大限度,则这个日期自动被调整为添加月份的最大日期:

mysql> SELECT DATE_ADD('1998-01-30', INTERVAL 1 MONTH);

-> '1998-02-28'

* DATE_FORMAT(date,format)

根据format 字符串安排date 值的格式。

以下说明符可用在 format 字符串中:

说明符


说明

%a


工作日的缩写名称 (Sun..Sat)

%b


月份的缩写名称 (Jan..Dec)

%c


月份,数字形式(0..12)

%D


带有英语后缀的该月日期 (0th, 1st, 2nd, 3rd, ...)

%d


该月日期, 数字形式 (00..31)

%e


该月日期, 数字形式(0..31)

%f


微秒 (000000..999999)

%H


小时(00..23)

%h


小时(01..12)

%I


小时 (01..12)

%i


分钟,数字形式 (00..59)

%j


一年中的天数 (001..366)

%k


小时 (0..23)

%l


小时 (1..12)

%M


月份名称 (January..December)

%m


月份, 数字形式 (00..12)

%p


上午(AM)或下午( PM)

%r


时间 , 12小时制 (小时hh:分钟mm:秒数ss 后加 AM或PM)

%S


秒 (00..59)

%s


秒 (00..59)

%T


时间 , 24小时制 (小时hh:分钟mm:秒数ss)

%U


周 (00..53), 其中周日为每周的第一天

%u


周 (00..53), 其中周一为每周的第一天

%V


周 (01..53), 其中周日为每周的第一天 ; 和 %X同时使用

%v


周 (01..53), 其中周一为每周的第一天 ; 和 %x同时使用

%W


工作日名称 (周日..周六)

%w


一周中的每日 (0=周日..6=周六)

%X


该周的年份,其中周日为每周的第一天, 数字形式,4位数;和%V同时使用

%x


该周的年份,其中周一为每周的第一天, 数字形式,4位数;和%v同时使用

%Y


年份, 数字形式,4位数

%y


年份, 数字形式 (2位数)

%%


‘%’文字字符

所有其它字符都被复制到结果中,无需作出解释。

回复主题
Copyright © 2008-2010 版权所属:中国Python联盟 www.okpython.com
京ICP备08012290号 村长QQ:81356625 E-mail:xieaotian@163.com