mysql中对于时间的处理,时间的滚动,求时间间隔,切换时区等等
mysql中对于时间的处理,时间的滚动,求时间间隔,切换时区等等
在mysql的使用过程中,有时候会出现对时间进行的操作,比如时间向前向后滚动,求2个时间的间隔,或者切换时区的操作
1,时间向前滚动(未来),假如现在有一个开始时间,持续时间,而我的业务只希望知道结束时间,这个时候就需要用到TIMESTAMPADD函数,
DATE_ADD(date,INTERVAL expr type)
date 参数是合法的日期表达式,可以是你需要的时间字段,如start_time(假设这是一个字段名)。
INTERVAL 是固定语法关键词
expr 参数是您希望添加的时间间隔,如 1 2 5。
type 参数可以是下列值:
FRAC_SECOND。毫秒
SECOND。秒
MINUTE。分钟
HOUR。小时
DAY。天
WEEK。星期
MONTH。月
QUARTER。季度
YEAR。年
2, 时间向后滚动(过去),和上面的用法类似,不过这次用的是DATE_SUB函数
DATE_ADD(date,INTERVAL expr type)
date 参数是合法的日期表达式,可以是你需要的时间字段,如start_time(假设这是一个字段名)。
INTERVAL 是固定语法关键词
expr 参数是您希望添加的时间间隔,如 1 2 5。
type 参数可以是下列值:
FRAC_SECOND。毫秒
SECOND。秒
MINUTE。分钟
HOUR。小时
DAY。天
WEEK。星期
MONTH。月
QUARTER。季度
YEAR。年
3,求2个时间的间隔,使用TIMESTAMPDIFF函数,
语法:
TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2)。
TIMESTAMPDIFF是语法关键词
interval是以什么精度返回
datetime_expr1,第一个时间
datetime_expr2,另一个时间
说明:
返回日期或日期时间表达式datetime_expr1 和datetime_expr2the 之间的整数差。其结果的单位由interval 参数给出。该参数必须是以下值的其中一个:
FRAC_SECOND。表示间隔是毫秒
SECOND。秒
MINUTE。分钟
HOUR。小时
DAY。天
WEEK。星期
MONTH。月
QUARTER。季度
YEAR。年
4, 切换时区的方法,在切换时区的时候考虑到日期变更线的问题,所以采用mysql自带的函数显然是明智之选
CONVERT_TZ(dt,from_tz,to_tz)
转换datetime值dt,从 from_tz 由给定转到 to_tz 时区给出的时区,并返回的结果值。 如果参数无效该函数返回NULL。
mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00');
+---------------------------------------------------------+
| CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00') |
+---------------------------------------------------------+
| 2004-01-01 22:00:00 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
时区方法原地址