mysql最大时间函数_mySql常用时间函数

1.取一个日期字段的年月:

方法一:select date_format(日期字段,'%Y-%m') as '日期' from 表

方法二:使用left()函数来截取

select left(日期字段,7) as date from tablename  (2019-07:占用7个字符)

方法三:使用substring()函数来截取

select substring(日期字段,0,7) as date from tablename

2.datetime和timestamp区别:

存储方式不一样,IMESTAMP,它把客户端插入的时间从当前时区转化为UTC(世界标准时间)进行存储。查询时,将其又转化为客户端当前时区进行返回。而对于DATETIME,不做任何改变,基本上是原样输入和输出。

占用存储空间不同。timestamp储存占用4个字节,datetime储存占用8个字节

可表示的时间范围不同。timestamp可表示范围:1970-01-01 00:00:00~2038-01-09 03:14:07,datetime支持的范围更宽1000-01-01 00:00:00 ~ 9999-12-31 23:59:59

TIMESTAMP类型在默认情况下,insert、update 数据时,TIMESTAMP列会自动以当前时间(CURRENT_TIMESTAMP)填充/更新。

索引速度不同。timestamp更轻量,索引相对datetime更快。

timestamp类型字段特殊性:

timestamp类型在自动初始化的时候,会自动设置成当前时间,会自动更新,默认的设置为:

`field` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

如果不想要这样,可以将timestamp设置为默认为空或者设置具体的默认值

3.mysql获取日期的时间函数:

now():在执行开始时值就得到了

sysdate():在函数执行时动态得到值

例子: select now(),sleep(3),now();                 结果:

40ffc607fbbb449e5ee9d8e5325fd171.png

select SYSDATE(),SLEEP(3),SYSDATE();  结果:

bd0a05a053fede0b4260e6a176ddca3f.png

可以看到,虽然中途 sleep 3 秒,但 now() 函数两次的时间值是相同的; sysdate() 函数两次得到的时间值相差 3 秒.

curdate():获取当前日期 ,current_date() ,current_date  同

curtime():获取当前时间 ,current_time() ,current_time  同

例子: select curdate();                                          结果:

2de97a968fb4ae116f2034cfd3a92be4.png

select curtime();                                          结果:

f1ddf4a263c1cded15c242cbfea07a74.png

extract():  选取日期时间的各个部分:日期、时间、年、季度、月、日、小时、分钟、秒、微秒

例子:select extract(year from now()) as year;          结果:

c13decfa2e2da5223b23a6c76493fe6d.png

66dd6dc8f0ac1c9bfc32605952e58a5a.png

last_day:返回月份中的最后一天

例子:select last_day('2008-02-03')                                                                       结果:

62e2d19270e9077ba0e2c4b5d06a03fd.png

MySQL last_day() 函数非常有用,比如我想得到当前月份中有多少天,可以这样来计算:

例子:select now(), day(last_day(now())) as days;                                                  结果:

82438a416fddcb9dc7c986e2823010a1.png

4.Mysql日期时间计算函数

在使用mysql的过程中,需要对日期进行计算,比如对某个日期加上几天,几个小时等操作

date:起始日期或者起始时间

expr:指定的是一个间隔值,在起始时间中增加或者减少,注意:expr是一个字符串.对于负值间隔,可以以"-"开头

unit:表示的是一个单位,比如,加上的是1天还是一个小时

4.1对某个日期加上n天的操作

select date_add('2018-06-26',INTERVAL '5' day);                                       结果:

3b103f41d9d317ae98933353bb0b6b85.png

4 .2对某个日期加上n小时,n分钟,n秒的操作

select date_add('2018-06-26 23:59:59',INTERVAL 1 hour); 结果:

8105ddf6c1b78541fa3dc5606fca1dd9.png

select date_add('2018-06-26 23:59:59',INTERVAL 1 minute);                      结果:

c7697c7790e0dec78d795c46364c48f3.png

select date_add('2018-06-26 23:59:59',INTERVAL 1 second);                      结果:

11e47162b69a1beb1ef6eeb753b9d960.png

4.3对某个日期加上n分钟n秒的操作

select date_add('2018-06-26 23:59:59',INTERVAL '1:1' MINUTE_SECOND);   结果:

80175717588bc9b4e073e9d3709b33d4.png

4.4对某个日期加上n小时n分钟n秒的操作

select date_add('2018-06-26 23:59:59',INTERVAL '1:1:1' HOUR_SECOND);   结果:

e880f07c1c2556ad27c73b902d5a98df.png

4.5对某个日期加上n小时n分钟的操作

select date_add('2018-06-26 23:59:59',INTERVAL '1:1' HOUR_MINUTE);       结果:

08fb58d0d4b705d508dbb33c7146507c.png

4.6.对某个日期加上几天几小时几分钟几秒钟

select date_add('2018-06-26 23:59:59',INTERVAL '2 2:1:1' DAY_SECOND);      结果:

48e6d9e1d6f889849543b7acc8216e89.png

注:对于日期的减法,尽量用date_sub()函数来实现.

5.Mysql日期时间相减函数

日期、时间相减函数:datediff(date1,date2), timediff(time1,time2)

5.1日期相减:MySQL datediff(date1,date2):两个日期相减 date1 - date2,返回天数。

例子:select datediff('2008-08-08', '2008-08-01') as days;     结果:7

select datediff('2008-08-01', '2008-08-08') as days;     结果:-7

5.2timediff(time1,time2):两个日期相减 time1 - time2,返回 time 差值

例子:select timediff('2008-08-08 08:08:08', '2008-08-08 00:00:00');  结果:08:08:08

select timediff('08:08:08', '00:00:00');                                      结果:08:08:08

6.字符串转换为日期:str_to_date()

函数:str_to_date(str, format)

例子: select str_to_date('08/09/2008', '%m/%d/%Y'); 结果: 2008-08-09select str_to_date('08/09/08' , '%m/%d/%y'); 2008-08-09select str_to_date('08.09.2008', '%m.%d.%Y'); 2008-08-09select str_to_date('08:09:30', '%h:%i:%s'); 08:09:30select str_to_date('08.09.2008 08:09:30', '%m.%d.%Y %h:%i:%s'); 2008-08-09 08:09:30

7.date_format(),time_format():将日期,时间转换成字符串,是str_to_date()的逆转换

9c85c4de8a88cbab6c4d7f1408e55725.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值