MySQL6

文章目录

    • 日期类型的函数
    • 获取日期、时间
    • 日期的格式化与解析

日期类型的函数

函数 用法
YEAR(date)/MONTH(date)/DAY(date) 返回具体的日期值
HOUR(time)/MINUTE(time)/SECOND(time) 返回具体的时间值
MONYHNAME(date) 返回月份
DAYNAME(date) 返回星期几
WEEKDAY(date) 返回周几
QUARTER(date) 返回日期对应的季度
WEEK(date),WEEKOFYEAR(date) 返回一年中的第几周
DAYOFYEAR(date) 返回日期中是一年中的第几周
DAYOFMONTH(date) 返回日期位于所在月份的第几天
DAYOFWEEK(date) 返回周几
SELECT  YEAR(CURDATE()),MONTH(CURDATE()),DAY(CURDATE())
HOUR(CURTIME()),MINUTE(NOW()),SECOND(SYSDAT())
FROM DUAL;

SELECT  MONTHNAME('2021-10-26'),DAYNAME('2021-10-26'),
WEEKDAY('2021-10-26')
QUARTER(CURTIME()),WEEK(CURDATE),DAYOFYEAR(NOW()),
DAYOFMONTH(NOW()),DAYOFWEEK(NOW())
FROM DUAL;
#默认格式:yyyy-MM-dd

获取日期、时间

函数 用法
CURDATE(),CURRENT_DATE() 返回当前日期,只包含年、月、日
CURTIIME(),CURRENT_TIME() 返回当前时间,只包含时、分、秒
NUW() 返回当前系统日期和书记兼
UTC_DATE() 返回UTC(世界标准日)日
UTC_TIME() 返回UTC(世界标准时间)时间
SELECT  CURDATE(),CURRENT_DATE(),NOW(),UTC_TIME()
FROM DUAL;

#日期与时间戳的转换
SELECT   UNIX_TIMESTAMP(),  #以UNIX时间戳的形式返回当前时间
 UNIX_TIMESTAMP('2022-05-05 10:12:37'), 
  #将时间date以UNIX时间戳的形式返回
FROM_UNIXTIME(1635173853)  #将UNIX时间戳的时间转换为普通格式化的时间
FROM DUAL;

#日期的操作函数
SELECT  EXTRACT(SECOND FROM NOW()) #获取当前秒数
EXTRACT(DAY FROM NOW()) #获取当前天数
EXTRACT(HOUR_MINUTE FROM NOW()) #获取当前小时和愤怒中
EXTRACT(QUARTER FROM NOW()) #获取当前季度
FROM DUAL;

#时钟和秒钟转换
SELECT TIME_TO_SEC(CURTIME())
 #具体秒数:转换公式:小时*3600+分钟*60+秒
 SEC_TO_TIME(83355) 
 #将seconds描述转换为包含小时、分钟和秒的时间
FROM DUAL;

计算日期和时间的函数

  • DATE_ADD(dateTime,INTERVAL expr
    type)返回与给定日期时间相差INTERVAL时间段的日期时期

  • DATE_SUB(date,INTERVAL expr type),SUBDATE(date,INTERVAL expr type)返回与date相差INTERAVL时间间隔的日期

#计算日期和时间的函数
SELECT   NOW(),DATE_ADD(NOW(),INTERVAL 1 YEAR) #加一年
#DATE_ADD(dateTime,INTERVAL expr type)返回与给定日期时间相差INTERVAL时间段的日期时间
DATE_SUB(NOW(),INTERVAL 1 YEAR) #减一年
#DATE_SUB(date,INTERVAL expr type),SUBDATE(date,INTERVAL expr type)返回与date相差INTERAVL时间间隔的日期
DATE_ADD(NOW(),INTERVAL 1 YEAR) AS co15 ,#可以是负数
DATE_ADD(NOW(),INTERVAL '1_1' YEAR_MONTH) AS CO16 #需要单引号
FROM DUAL;
函数 用法
ADDTIME(time1,time2) 返回time1加上time2的时间。当time2为一个数字时,代表的时秒,可以为负数。
SUBTIMETIME(time1,time2) 返回time1减去time2后的时间,当time2为一个数字时,代表的是秒,可以为负数
DATEDIFF(date1,date2) 返回date1减去date2间隔的天数
TIMEDIFF(time1,time2) 返回time1减去time2的时间间隔
FROM_DAYS(N) 返回从0000年1月1日起,N天以后的日期
TO_DAYS(date) 返回日期date距离0000年1月1日的天数
LAST_DAY(date) 返回date所在月份的最后一天日期
MAKEDATE(year,n) 针对给定年份与所在年份中的天数返回一个日期
MAKETIME(hour,minute,second) 将给定的小时、分钟和秒组合成时间并返回
PERIOD_ADD(time,n) 返回time加上n后的时间
SELECT  ADDTIME(NOW(),20),SUBTIME(NOW(),30),SUBTIME(NOW(),'1:1:3'),
DATEDIFF(NOW(),'2021-10-01'),TIMEDIFF(NOW(),'2021-10-25 22:10:10')
FROM_DAYS(366) # 0001-01-01
MAKEDATE(YEAR(NOW()),12)  # 这一年的第12天
MAKETIME(10,21,23) # 返回 10:21:23
TO_DAYS('0000-12-25')# 359天
FROM DUAL;

日期的格式化与解析

  • 格式化:日期—>字符串
  • 解析:字符串—>日期
    我们所谈的是:日期的显示格式化和解析
函数 用法
DATE_FORMAT(date,fmt) 按照字符串fmt格式化日期date值
TIME_FORMAT(time,fmt) 按照字符串fmt格式化时间time的值
GET_FORMAT(date_type,format_type) 返回日期字符串的显示格式
STR_TO_DATE(str,fmt) 按照字符串fmt对str进行解析,解析为一个日期
SELECT    DATE_FORMAT(CURDATE(),'%Y-%M-%D'),
DATE_FORMAT(NOW(),'%Y-%m-%d')
#%Y 4位数字表示年份   %y 两位数字表示年份
#%M 表示月份(英文大写)          %m 两位数字表示月份(01、02...)
#%b 缩写的月名(Jan,Feb...)
#%D 4英文后缀表示月中的天数(1st,2nd,3rd...)
#%S和%s 两位数字表示秒(00,01,02...) %i 两位数字表示分钟(00,01,02)
#%H两位数字表示小时,24小时制(01,02...)
 #%h两位数字表示小时,12小时制(01,02...)
FROM DUAL;

解析:

  • DATE_FORMAT(date,fmt) 按照字符串fmt格式化日期date值
  • TIME_FORMAT(time,fmt) 按照字符串fmt格式化时间time值
  • GET_FORMAT(date_type,format_type) 返回日期字符串的显示格式
  • STR_TO_DATE(str,fmt) 按照字符串fmt对str进行解析,解析为一个日期

日期需要写成24小时制

SELECT  STR_TO_DATE('2021-October-25th 11:34:42 Monday 1  ','%Y-%M-%D %h:%i:%S %W %w')
#结果:2021-10-25 11:34:42
#%W一周的星期名称(Sunday...)
#%w以数字表示周中的天数(0=Sunday...)
#%T24小时制
#%r12小时制
#%pAM或者AM
FROM DUAL;

既不是解析也不是格式化:返回日期格式

SELECT GET_FORMAT(DATE,'USA')
#结果:%m.%d.%Y
FROM DUAL;

MySQL6_第1张图片

你可能感兴趣的:(mysql)