/*
date_add(date,interval expr type)和date_sub(date,interval expr type)执行日期运算。 date 是一个 datetime 或date值,用来指定起始时间。 expr 是一个表达式,用来指定从起始日期添加或减去的时间间隔值。 expr是一个字符串;对于负值的时间间隔,它可以以一个 ‘-’开头。 type 为关键词,它指示了表达式被解释的方式。
关键词interva及 type 分类符均不区分大小写。
日期操作,adddate就是date_add的同义词。如果adddate没有指定interval,则默认将天数作为interval(date_add不行)
*/
select date_add(
'
2011-01-01
',interval
30
day),date_add(
'
2011-01-01
',interval
-
1
day),adddate(
'
2011-01-01
',interval
30
day),adddate(
'
2011-01-01
',
30),date_sub(
'
2011-01-01
',interval
1
day),subdate(
'
2011-01-01
',interval
1
day);
--
时间操作
select addtime(
'
2011-01-01 00:00:00
',
'
1:05:33
'),addtime(
'
00:00:00
',
'
1:05:33
');
--
获取当前日期,+0以后会去掉分割线,current_date和curdate是同义词
select curdate() ,curdate()
+
0,
current_date();
--
获取当前时间,curtime和current_time是同义词
select curtime(),
current_time(),
current_time()
+
0;
--
查询当前的服务器时区和当前连接的时区,当前连接的时区初使值与全局变量time_zone相同,但可以用下面的语句重设:set time_zone = timezone;
select
@@global.time_zone,
@@session
.time_zone;
--
指定时区转换
select convert_tz(
'
2004-01-01 12:00:00
',
'
+08:00
',
'
+00:00
');
--
获取当前日期和时间,current_timestamp和now是同义词
select
current_timestamp(),now(),now()
+
0,
current_timestamp()
+
0;
--
提取日期或时间日期表达式expr中的日期部分。
select date(
'
2003-12-31 01:02:03
');
--
datediff(expr,expr) ,返回expr减去expr2之间的天数。expr和expr2 为日期或 date-and-time 表达式。计算中只用到这些值的日期部分。
select
datediff(
'
1997-12-31 23:59:59
',
'
1997-12-30
'),
datediff(
'
1997-11-30 23:59:59
',
'
1997-12-31
');
/*
mysql 允许任何expr 格式中的标点分隔符。表中所显示的是建议的 分隔符。若 date 参数是一个 date 值,而你的计算只会包括 year、month和day部分(即, 没有时间部分), 其结果是一个date 值。否则,结果将是一个 datetime值。
若位于另一端的表达式是一个日期或日期时间值 , 则interval expr type只允许在 + 操作符的两端。对于 –操作符, interval expr type 只允许在其右端,原因是从一个时间间隔中提取一个日期或日期时间值是毫无意义的。 (见下面的例子)。
*/
select
'
1997-12-31
'
+ interval
1 second,
'
1997-12-31
'
- interval
1 second,
'
1997-12-31 23:59:59
'
+ interval
1 second,interval
1
day
+
'
1997-12-31
',
'
1998-01-01
'
- interval
1 second;
--
interval 还可以使用负值
select
'
1997-12-31
'
+
interval
-
1
day;
--
时间日期格式化函数 date_format(date,format)
select date_format(now(),
'
%y-%m-%d %h:%i:%s
');
--
常用获取日期中某部分的函数
select
day(now()),dayname(now()),dayofweek(now()),dayofyear(now())
--
extract(type from date)
--
extract()函数所使用的时间间隔类型说明符同 date_add()或date_sub()的相同,但它从日期中提取其部分,而不是执行日期运算。
--
获取月份,天数,不满10不会自己加0
select extract(
year
from
'
1999-07-02
'),extract(
month
from
'
1999-07-02
');
相关文章
- 【MYSQL】常用命令备忘录
- mysql5.7安装配置,常用命令,常见问题
- mysql中的Date日期格式的问题:只有日期没有时间及格式化时间
- MySql表有两个或更多列有默认日期vaule CURRENT_TIMESTAMP,任何解决方案?
- 在mysql中使用group by和order by取每个分组中日期最大一行数据
- mysql--SQL编程(关于mysql中的日期,实例,判断生日是否为闰年) 学习笔记2.1
- MySQL 日期函数、时间函数在实际场景中的应用
- mysql和oracle日期和字符相互转换
- mysql中计算日期整数差
- mysql日期格式转换,如何保持原日期?CONVERT/Substring 函数截取。replace替换