当前位置:Gxlcms > 数据库问题 > Mysql时间函数

Mysql时间函数

时间:2021-07-01 10:21:17 帮助过:2人阅读

增加N个月到阶段P,P的格式为YYMM或者YYYYMM

select PERIOD_ADD(9801,2);  -- 199803 

 

PERIOD_DIFF(P1,P2)

返回P1和P2相差的月数,P的格式为YYMM或者YYYYMM

 

DateDiff(datetime1, datetime2)

返回相差天数

 

TimeDiff(datetime1, datetime2)

返回相差时间(hh:mm:ss),两个参数格式必须相同

 

TimeStampDiff(unit,datetime1,datetime2)
返回日期或日期时间表达式datetime_expr1 和datetime_expr2the 之间的整数差。

unit参数指定结果单位,可用值为:

  • FRAC_SECOND 毫秒
  • SECOND  秒
  • MINUTE  分钟
  • HOUR  小时
  • DAY  天
  • WEEK  星期
  • MONTH  月
  • QUARTER  季度
  • YEAR  年

 

示例语句:

SELECT TIMESTAMPDIFF(SECOND, ‘2012-12-21‘, CURRENT_TIMESTAMP()) AS `Second`;

SELECT * from autotesting_mobiledevice where TIMESTAMPDIFF(SECOND, MDLastSynchTime, NOW())<6000;

 

注意事项:

秒以上单位的时间差计算都是以秒为基础的。

天数的时间差是以24*60*60(86400)为依据的。假如相差间隔小于86400秒,则为0,如果>=86400秒且<86400*2秒,则为1。

如果单位为分钟,那么计算间隔分钟是以60秒为依据的。假如相差间隔小于60秒,则为0,如果>=60秒且<60*2秒,则为1。

select timestampdiff(day,"2012-08-22 15:15:15","2012-08-23 15:15:16");
1

select timestampdiff(day,"2012-08-22 15:15:17","2012-08-23 15:15:16");
0

 

 

三、时间转换

time_to_sec(datetime)

返回总秒数

 

sec_to_time(seconds)

 

to_days(date)

from_days(days)

 

makeDate(year,dayofyear)

makeTime(hour,minute,second)

 

str_to_date(str,format)

select str_to_date(‘08.09.2008 08:09:30‘, ‘%m.%d.%Y %h:%i:%s‘); -- 2008-08-09 08:09:3

format:

  %M 月名字(January……December)  
  %W 星期名字(Sunday……Saturday)  
  %D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)  
  %Y 年, 数字, 4 位  
  %y 年, 数字, 2 位  
  %a 缩写的星期名字(Sun……Sat)  
  %d 月份中的天数, 数字(00……31)  
  %e 月份中的天数, 数字(0……31)  
  %m 月, 数字(01……12)  
  %c 月, 数字(1……12)  
  %b 缩写的月份名字(Jan……Dec)  
  %j 一年中的天数(001……366)  
  %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)  
  %S 秒(00……59)  
  %s 秒(00……59)  
  %p AM或PM  
  %w 一个星期中的天数(0=Sunday ……6=Saturday )  
  %U 星期(0……52), 这里星期天是星期的第一天  
  %u 星期(0……52), 这里星期一是星期的第一天  
  %% 一个文字“%”。  
  所有的其他字符不做解释被复制到结果中。

 

date_format(date,format)

time_format(time,format)

 

get_format(date|time|datetime, ‘eur|usa|jis|iso|internal‘)

获取国家地区的时间格式

 

unix_timestamp()

返回自1970-1-1 0:00:00 UTC(因为中国是东八区,所以是8:00:00.)开始到当前系统时间为止的秒数

unix_timestamp(datetime)

早于1970-1-1 0:00:00 UTC的时间,返回0

from_unixTime(unix_timestamp)

字符串环境输出格式为:YYYY-MM-DD HH:MM:SS,数字环境输出格式为:YYYYMMDDHHMMSS

 

from_unixTime(unix_timestamp, format)

 

 

convert_tz(datetime, from_tz, to_tz)

时区转换,也可以通过date_add(),date_sub(),timestampadd()等函数实现

select convert_tz(‘2008-08-08 12:00:00‘, ‘+08:00‘, ‘+00:00‘); -- 2008-08-08 04:00:00

Mysql时间函数

标签:

人气教程排行