700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > MySQL:日期时间函数-日期时间计算和转换

MySQL:日期时间函数-日期时间计算和转换

时间:2018-07-26 18:47:28

相关推荐

MySQL:日期时间函数-日期时间计算和转换

目录

MySQL 日期与时间方面的函数

获得当前日期

时间转换

MySQL Str to Date (字符串转换为日期)函数:str_to_date(str, format)

MySQL (日期、天数)转换函数:to_days(date), from_days(days)

MySQL (时间、秒)转换函数:time_to_sec(time), sec_to_time(seconds)

MySQL 拼凑日期、时间函数:makdedate(year,dayofyear), maketime(hour,minute,second)

MySQL (Unix 时间戳、日期)转换函数

FROM_UNIXTIME(unix_timestamp,format),DATE_FORMAT(date,format)中format

MySQL 日期时间计算函数

MySQL 为日期增加一个时间间隔:date_add()

MySQL 为日期减去一个时间间隔:date_sub()

DATE_ADD(date,INTERVAL expr unit) 与 DATE_SUB(date,INTERVAL expr unit)

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

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

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

MySQL 时间戳(timestamp)转换、增、减函数:

MySQL 时区(timezone)转换函数

MySQL 日期与时间方面的函数

获得当前日期

select now(),current_timestamp(),current_timestamp,CURDATE(),CURTIME();

时间转换

MySQL Str to Date (字符串转换为日期)函数:str_to_date(str, format)

select str_to_date('08/09/', '%m/%d/%Y'); -- -08-09select str_to_date('08/09/08' , '%m/%d/%y'); -- -08-09select str_to_date('08.09.', '%m.%d.%Y'); -- -08-09select str_to_date('08:09:30', '%h:%i:%s'); -- 08:09:30select str_to_date('08.09. 08:09:30', '%m.%d.%Y %h:%i:%s'); -- -08-09 08:09:30

MySQL (日期、天数)转换函数:to_days(date), from_days(days)

select to_days('0000-00-00'); -- 0select to_days('-08-08'); -- 733627

MySQL (时间、秒)转换函数:time_to_sec(time), sec_to_time(seconds)

select time_to_sec('01:00:05'); -- 3605select sec_to_time(3605); -- '01:00:05'

MySQL 拼凑日期、时间函数:makdedate(year,dayofyear), maketime(hour,minute,second)

select makedate(2001,31); -- '2001-01-31'select makedate(2001,32); -- '2001-02-01'select maketime(12,15,30); -- '12:15:30'

MySQL (Unix 时间戳、日期)转换函数

unix_timestamp(),

unix_timestamp(date),

from_unixtime(unix_timestamp),

from_unixtime(unix_timestamp,format)

下面是示例:

select unix_timestamp(); -- 1218290027select unix_timestamp('-08-08'); -- 1218124800select unix_timestamp('-08-08 12:30:00'); -- 1218169800select from_unixtime(1218290027); -- '-08-09 21:53:47'select from_unixtime(1218124800); -- '-08-08 00:00:00'select from_unixtime(1218169800); -- '-08-08 12:30:00'

FROM_UNIXTIME(unix_timestamp,format),DATE_FORMAT(date,format)中format

下表中列出了一些可用于 format 字符串的标识符。格式标识符第一个字符必须是%字符。

MySQL 日期时间计算函数

MySQL 为日期增加一个时间间隔:date_add()

set @dt = now();select date_add(@dt, interval 1 day); -- add 1 dayselect date_add(@dt, interval 1 hour); -- add 1 hourselect date_add(@dt, interval 1 minute); -- ...select date_add(@dt, interval 1 second);select date_add(@dt, interval 1 microsecond);select date_add(@dt, interval 1 week);select date_add(@dt, interval 1 month);select date_add(@dt, interval 1 quarter);select date_add(@dt, interval 1 year);

MySQL 为日期减去一个时间间隔:date_sub()

DATE_ADD(date,INTERVAL expr unit) 与 DATE_SUB(date,INTERVAL expr unit)

执行日期计算的两种函数。date是一个用来指定开始日期的 DATETIME 或 DATE 值。expr是一种以字符串形式呈现的表达式,用来指定从开始日期增加或减少的间隔值。如果是负的间隔值,则expr值的第一个字符是-号。unit是一个单位关键字,用来指定expr表达式应该采取的单位。

INTERVAL 关键字与单位说明符都不区分大小写。

下表列出了每个单位数值所对应的 expr 参数的期望格式。

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

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

-- datediff(date1,date2):两个日期相减 date1 - date2,返回天数。select datediff('-08-08', '-08-01'); -- 7select datediff('-08-01', '-08-08'); -- -7

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

select timediff('-08-08 08:08:08', '-08-08 00:00:00'); -- 08:08:08select timediff('08:08:08', '00:00:00'); -- 08:08:08

注意:timediff(time1,time2) 函数的两个参数类型必须相同。

MySQL 时间戳(timestamp)转换、增、减函数:

timestamp(date) -- date to timestamptimestamp(dt,time) -- dt + timetimestampadd(unit,interval,datetime_expr) --timestampdiff(unit,datetime_expr1,datetime_expr2) --

请看示例部分:

select timestamp('-08-08'); -- -08-08 00:00:00select timestamp('-08-08 08:00:00', '01:01:01'); -- -08-08 09:01:01select timestamp('-08-08 08:00:00', '10 01:01:01'); -- -08-18 09:01:01select timestampadd(day, 1, '-08-08 08:00:00'); -- -08-09 08:00:00select date_add('-08-08 08:00:00', interval 1 day); -- -08-09 08:00:00-- timestampadd() 函数类似于 date_add()。select timestampdiff(year,'2002-05-01','2001-01-01'); -- -1select timestampdiff(day ,'2002-05-01','2001-01-01'); -- -485select timestampdiff(hour,'-08-08 12:00:00','-08-08 00:00:00'); -- -12select datediff('-08-08 12:00:00', '-08-01 00:00:00'); -- 7

MySQL timestampdiff() 函数就比 datediff() 功能强多了,datediff() 只能计算两个日期(date)之间相差的天数。

MySQL 时区(timezone)转换函数

-- convert_tz(dt,from_tz,to_tz)select convert_tz('-08-08 12:00:00', '+08:00', '+00:00'); -- -08-08 04:00:00

时区转换也可以通过 date_add, date_sub, timestampadd 来实现。

select date_add('-08-08 12:00:00', interval -8 hour); -- -08-08 04:00:00select date_sub('-08-08 12:00:00', interval 8 hour); -- -08-08 04:00:00select timestampadd(hour, -8, '-08-08 12:00:00'); -- -08-08 04:00:00

参考链接:/project/mysql/useful-functions/time-functions.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。