您好,欢迎访问一九零五行业门户网

MySQL的Data_ADD函数与日期格式化函数说明

今天看到了mysql的日期函数,里面很多有用的,这里只把两个参数不太好记的粘下来了。
date_add(date,interval expr type) date_sub(date,interval expr type) 这些函数执行日期运算。 date 是一个 datetime 或date值,用来指定起始时间。 expr 是一个表达式,用来指定从起始日期添加或减去的时间间隔值。 expr是一个字符串;对于负值的时间间隔,它可以以一个 ‘-'开头。 type 为关键词,它指示了表达式被解释的方式。
关键词interva及 type 分类符均不区分大小写。
以下表显示了type 和expr 参数的关系:
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 字符串中:
所有其它字符都被复制到结果中,无需作出解释。
注意, ‘%'字符要求在格式指定符之前。
月份和日期说明符的范围从零开始,原因是 mysql允许存储诸如 '2004-00-00'的不完全日期.
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'
mysql> select date_format('1999-01-01', '%x %v');
-> '1998 52'
其它类似信息

推荐信息