Jslfl【软件开发技术笔记】

mysql日期转换及加减

日期格式化
date_format(date,’%Y-%m-%d’)(oracle中的to_char())

字符串转日期
str_to_date(date,’%Y-%m-%d’)(oracle中的to_date())

select str_to_date(‘2015-12-26 13:11:32′,’%Y-%m-%d%T’);
——————————————–
2015-12-26 13:11:32

%Y:代表4位的年份
%y:代表2为的年份

%m:代表月, 格式为(01……12)
%c:代表月, 格式为(1……12)

%d:代表月份中的天数,格式为(00……31)
%e:代表月份中的天数, 格式为(0……31)

%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)

日期加减
DATE_ADD(date,INTERVAL expr type)
DATE_SUB(date,INTERVAL expr type)
date是一个datetime或date值,指定起始日期时间;
INTERVAL为关键字;
expr是一个表达式,指定从起始日期加或减的时间间隔值,可以以一个 ‘-’开头表示负值;
type是时间单位,可以复合型的,比如YEAR_MONTH

type说明:

MICROSECOND	   间隔单位:毫秒
SECOND	           间隔单位:秒
MINUTE	           间隔单位:分钟
HOUR	           间隔单位:小时
DAY	           间隔单位:天
WEEK	           间隔单位:星期
MONTH	           间隔单位:月
QUARTER	           间隔单位:季度
YEAR	           间隔单位:年
SECOND_MICROSECOND 复合型,间隔单位:秒、毫秒,expr可以用两个值来分别指定秒和毫秒
MINUTE_MICROSECOND 复合型,间隔单位:分、毫秒
MINUTE_SECOND	   复合型,间隔单位:分、秒
HOUR_MICROSECOND   复合型,间隔单位:小时、毫秒
HOUR_SECOND	   复合型,间隔单位:小时、秒
HOUR_MINUTE	   复合型,间隔单位:小时分
DAY_MICROSECOND	   复合型,间隔单位:天、毫秒
DAY_SECOND	   复合型,间隔单位:天、秒
DAY_MINUTE	   复合型,间隔单位:天、分
DAY_HOUR	   复合型,间隔单位:天、小时
YEAR_MONTH	   复合型,间隔单位:年、月

如果type为复合型,expr需要用引号把两个参数引起来,中间任意非数字字符间隔即可,且不能使用负数,如’1_2’、’1,2′;
但对于type为复合型,如YEAR_MONTH,expr也可以只指定了一个值,有效单位为后面一个MONTH,效果和type为MONTH相同,且可以使用负数.

例:

1
2
3
4
5
6
7
8
9
10
11
SELECT date_add('2013-01-18', INTERVAL '1 2' YEAR_MONTH);
-- 2014-03-18

SELECT date_add('2013-01-18', INTERVAL '1-2' YEAR_MONTH);
-- 2014-03-18

SELECT date_add('2013-01-18', INTERVAL 1 YEAR_MONTH);
-- 2013-02-18

SELECT date_add('2013-01-18', INTERVAL -1 YEAR_MONTH);
-- 2012-12-18

,

Comments are currently closed.