MySQL-- 函数(单行函数): 日期和时间函数

打印 上一主题 下一主题

主题 1583|帖子 1583|积分 4749

目录

1,获取日期、时间
2,日期与时间戳的转换
3,获取月份、星期、星期数、天数等函数
4,日期的操作函数
5,时间和秒钟转换的函数
6,计算日期和时间的函数
7,日期的格式化与剖析


1,获取日期、时间

   CURDATE() ,CURRENT_DATE()                              返回当前日期,只包含年、 月、日 
CURTIME() , CURRENT_TIME()                               返回当前时间,只包含时、 分、秒 
NOW() / SYSDATE() / CURRENT_TIMESTAMP() / LOCALTIME() / LOCALTIMESTAMP()  返回当前系统日期和时间    
UTC_DATE()                                                   返回UTC(世界尺度时间) 日期    
UTC_TIME()                                                    返回UTC(世界尺度时间) 时间    
  1. SELECT CURDATE(),CURRENT_DATE(),CURTIME(),NOW(),SYSDATE(),
  2. UTC_DATE(),UTC_TIME()
  3. FROM DUAL;
  4. SELECT CURDATE(),CURDATE() + 0,CURTIME() + 0,NOW() + 0
  5. FROM DUAL;
复制代码
2,日期与时间戳的转换

   UNIX_TIMESTAMP()          以UNIX时间戳的形式返回当前时间。SELECT UNIX_TIMESTAMP() - >1634348884 
 UNIX_TIMESTAMP(date)      将时间date以UNIX时间戳的形式返回。                       
 FROM_UNIXTIME(timestamp)     将UNIX时间戳的时间转换为普通格式的时间                  
  1. SELECT UNIX_TIMESTAMP(),UNIX_TIMESTAMP('2021-10-01 12:12:32'),
  2. FROM_UNIXTIME(1635173853),FROM_UNIXTIME(1633061552)
  3. FROM DUAL;
复制代码
3,获取月份、星期、星期数、天数等函数

   YEAR(date) / MONTH(date) / DAY(date)             返回详细的日期值                                 
HOUR(time) / MINUTE(time) / SECOND(time)    返回详细的时间值                                 
FROM_UNIXTIME(timestamp)       将UNIX时间戳的时间转换为普通格式的时间       
MONTHNAME(date)                      返回月份:January,...                           
DAYNAME(date)                            返回星期几:MONDAY,TUESDAY.....SUNDAY           
WEEKDAY(date)                            返回周几,注意,周1是0,周2是1,。。。周日是6    
QUARTER(date)                            返回日期对应的季度,范围为1~4                   
WEEK(date) , WEEKOFYEAR(date)           返回一年中的第几周                               
DAYOFYEAR(date)                        返回日期是一年中的第几天                         
DAYOFMONTH(date)                     返回日期位于地点月份的第几天                     
DAYOFWEEK(date)                       返回周几,注意:周日是1,周一是2,。。。周六是 7 
  1. SELECT YEAR(CURDATE()),MONTH(CURDATE()),DAY(CURDATE()),
  2. HOUR(CURTIME()),MINUTE(NOW()),SECOND(SYSDATE())
  3. FROM DUAL;
  4. SELECT MONTHNAME('2021-10-26'),DAYNAME('2021-10-26'),WEEKDAY('2021-10-26'),
  5. QUARTER(CURDATE()),WEEK(CURDATE()),DAYOFYEAR(NOW()),
  6. DAYOFMONTH(NOW()),DAYOFWEEK(NOW())
  7. FROM DUAL;
复制代码
4,日期的操作函数

   EXTRACT(type FROM date) | 返回指定日期中特定的部门,type指定返回的值 
  EXTRACT(type FROM date)函数中type的取值与寄义:
  

  1. SELECT EXTRACT(SECOND FROM NOW()),EXTRACT(DAY FROM NOW()),
  2. EXTRACT(HOUR_MINUTE FROM NOW()),EXTRACT(QUARTER FROM '2021-05-12')
  3. FROM DUAL;
复制代码
5,时间和秒钟转换的函数

   TIME_TO_SEC(time)      将 time 转化为秒并返回效果值。转化的公式为:小时*3600+分钟 *60+秒 
SEC_TO_TIME(seconds)   将 seconds 形貌转化为包含小时、分钟和秒的时间                
  1. SELECT TIME_TO_SEC(CURTIME()),
  2. SEC_TO_TIME(83355)
  3. FROM DUAL;
复制代码
6,计算日期和时间的函数

   DATE_ADD(datetime, INTERVAL expr type), ADDDATE(date,INTERVAL expr type) | 返回与给定日期时间相差INTERVAL时间段的日期时间 
DATE_SUB(date,INTERVAL expr type), SUBDATE(date,INTERVAL expr type)  返回与date相差INTERVAL时间间隔的日期           
  上述函数中type的取值:
  

  ADDTIME(time1,time2)        返回time1加上time2的时间。当time2为一个数字时,代表的是 秒 ,可以为负数 
SUBTIME(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后的时间                                        
  1. SELECT NOW(),DATE_ADD(NOW(),INTERVAL 1 YEAR),
  2. DATE_ADD(NOW(),INTERVAL -1 YEAR),
  3. DATE_SUB(NOW(),INTERVAL 1 YEAR)
  4. FROM DUAL;
  5. SELECT DATE_ADD(NOW(), INTERVAL 1 DAY) AS col1,DATE_ADD('2021-10-21 23:32:12',INTERVAL 1 SECOND) AS col2,
  6. ADDDATE('2021-10-21 23:32:12',INTERVAL 1 SECOND) AS col3,
  7. DATE_ADD('2021-10-21 23:32:12',INTERVAL '1_1' MINUTE_SECOND) AS col4,
  8. DATE_ADD(NOW(), INTERVAL -1 YEAR) AS col5, #可以是负数
  9. DATE_ADD(NOW(), INTERVAL '1_1' YEAR_MONTH) AS col6 #需要单引号
  10. FROM DUAL;
  11. SELECT ADDTIME(NOW(),20),SUBTIME(NOW(),30),SUBTIME(NOW(),'1:1:3'),DATEDIFF(NOW(),'2021-10-01'),
  12. TIMEDIFF(NOW(),'2021-10-25 22:10:10'),FROM_DAYS(366),TO_DAYS('0000-12-25'),
  13. LAST_DAY(NOW()),MAKEDATE(YEAR(NOW()),32),MAKETIME(10,21,23),PERIOD_ADD(20200101010101,10)
  14. FROM DUAL;
复制代码
7,日期的格式化与剖析

   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举行剖析,剖析为一个日期 
  上述 非GET_FORMAT 函数中fmt参数常用的格式符:
  
%Y     4位数字表示年份                                              %y      表示两位数字表示年份               
%M     月名表示月份(January,....)                           %m      两位数字表示月份 (01,02,03。。。)     
%b     缩写的月名(Jan.,Feb.,....)                         %c      数字表示月份(1,2,3,...)        
%D     英文后缀表示月中的天数 (1st,2nd,3rd,...)      %d     两位数字表示月中的天数(01,02...)                
%e     数字形式表示月中的天数 (1,2,3,4,5.....)                                                             
%H     两位数字表示小数,24小时制 (01,02..)      %h 和%I 两位数字表示小时,12小时制 (01,02..)              
%k     数字形式的小时,24小时制(1,2,3)             %l   数字形式表示小时,12小时制 (1,2,3,4....)            
%i     两位数字表示分钟(00,01,02)            %S 和%s | 两位数字表示秒(00,01,02...)    
%W     一周中的星期名称(Sunday...)              %a      一周中的星期缩写(Sun., Mon.,Tues.,..)      
%w   以数字表示周中的天数 (0=Sunday,1=Monday....)                                                        
%j     以3位数字表示年中的天数(001,002...)       %U      以数字表示年中的第几周, (1,2,3。。)其中Sunday为周中第一 天 
%u     以数字表示年中的第几周, (1,2,3。。)其中Monday为周中第一 天                    
%T     24小时制            %r      12小时制                    
%p      AM或PM                 %%      | 表示%              
  1. # 格式化:日期 ---> 字符串
  2. # 解析:  字符串 ----> 日期
  3. #此时我们谈的是日期的显式格式化和解析
  4. #之前,我们接触过隐式的格式化或解析
  5. SELECT *
  6. FROM employees
  7. WHERE hire_date = '1993-01-13';
  8. #格式化:
  9. SELECT DATE_FORMAT(CURDATE(),'%Y-%M-%D'),
  10. DATE_FORMAT(NOW(),'%Y-%m-%d'),TIME_FORMAT(CURTIME(),'%h:%i:%S'),
  11. DATE_FORMAT(NOW(),'%Y-%M-%D %h:%i:%S %W %w %T %r')
  12. FROM DUAL;
  13. #解析:格式化的逆过程
  14. SELECT STR_TO_DATE('2021-October-25th 11:37:30 Monday 1','%Y-%M-%D %h:%i:%S %W %w')
  15. FROM DUAL;
  16. SELECT GET_FORMAT(DATE,'USA')
  17. FROM DUAL;
  18. SELECT DATE_FORMAT(CURDATE(),GET_FORMAT(DATE,'USA'))
  19. FROM DUAL;
复制代码



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

用户云卷云舒

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表