MySQL时期时间函数


/* */

/*返回日期date是星期几(1=星期天,2=星期一,……7=星期六,odbc标准) 
   dayofweek(date)   */
  select dayofweek('2018-01-12');    
   
/* 返回日期date是星期几(0=星期一,1=星期二,……6= 星期天)。
  weekday(date)    */
  
  select weekday('2018-01-12');    
  select weekday('1997-11-05');    
   
 
/* 返回date是一月中的第几日(在1到31范围内) 
  dayofmonth(date)   */
  select dayofmonth('2018-01-12');    

 
/* 返回date是一年中的第几日(在1到366范围内) 
  dayofyear(date)    */
  select dayofyear('2018-01-12');    
 
/* 返回date中的月份数值 (1-12) 
  month(date)    */
  select month('2018-01-12');    
  
 
/* 返回date是星期几(按英文名返回) 
 dayname(date)    
 */
  select dayname("1998-02-05");    
   
 
/* 返回date是几月(按英文名返回)  
  monthname(date)     */
 select monthname("1998-02-05");    
    
 
/*  返回date是一年的第几个季度  
 quarter(date)       */
 select quarter('1988-02-01');    
   
/* 返回date是一年的第几周(first默认值0,first取值1表示周一是周的开始,0从周日开始,默认从周日开始)
  week(date,first)   */
 select week('2018-01-12');     
 select week('2018-01-12',0);   
 select week('2018-01-12',1);    
  
 
/* 返回date的年份(范围在1000到9999) 
  year(date)    */
 select year('98-02-03');    
   
 
/* 返回time的小时数(范围是0到23,time格式(10:00:00),填时间格式(yyyy-mm-dd))返回0 ,不计算年月日
   hour(time)    
  */
 select hour('2017-1-1 10:00');    
    
 
/* 返回time的分钟数(范围是0到59)  
 minute(time)    */
  select minute('98-02-03 10:05:03');    
 
 
/*返回time的秒数(范围是0到59)  
second(time)     */
  select second('10:05:03');     
 
/* 增加n个月到时期p并返回(p的格式yymm或yyyymm) 第一种调用方式正确 
  period_add(p,n)    */
  select period_add(201701,20);    
  select period_add(20170102,20);     
  select period_add('2017-1-1',20);    
  
 
/*  返回在时期p1和p2之间月数(p1和p2的格式yymm或yyyymm)  
  period_diff(p1,p2)    */
  select period_diff(9802,199903);    
  select period_diff(9802,199703);    
   
/* 时间加减
date_add(date,interval expr type)  时间加
date_sub(date,interval expr type)  时间减
adddate(date,interval expr type)   添加时间 
subdate(date,interval expr type)   减去时间
对日期时间进行加减法运算  
(adddate()和subdate()是date_add()和date_sub()的同义词,也
可以用运算符+和-而不是函数  
date是一个datetime或date值,expr对date进行加减法的一个表
达式字符串type指明表达式expr应该如何被解释  
 [type值 含义 期望的expr格式]:  
 second 秒 seconds    
 minute 分钟 minutes    
 hour 时间 hours    
 day 天 days    
 month 月 months    
 year 年 years    
 minute_second 分钟和秒 "minutes:seconds"    
 hour_minute 小时和分钟 "hours:minutes"    
 day_hour 天和小时 "days hours"    
 year_month 年和月 "years-months"    
 hour_second 小时, 分钟, "hours:minutes:seconds"    
 day_minute 天, 小时, 分钟 "days hours:minutes"    
 day_second 天, 小时, 分钟, 秒 "days
hours:minutes:seconds" 
 expr中允许任何标点做分隔符,如果所有是date值时结果是一个
date值,否则结果是一个datetime值)  
 如果type关键词不完整,则mysql从右端取值,day_second因为缺
少小时分钟等于minute_second)  
 如果增加month、year_month或year,天数大于结果月份的最大天
数则使用最大天数)    */
 select "1997-12-31 23:59:59" - interval 1 second;  
 select interval 1 day + "1997-12-31";  
 select "1998-01-01" - interval 1 second;
 select date_add("1997-12-31 23:59:59",interval 1 hour);
 select date_add("1997-12-31 23:59:59",interval 1 day);   
 select date_add("1997-12-31 23:59:59",interval 1 minute_second);   
 select date_sub("1998-01-01 00:00:00",interval "11:1:1" day_second);  
 select date_sub("1998-01-01 00:00:00", interval "-110" day_hour);  
 select date_sub("1998-01-02", interval 31 day);    
 select extract(year from "1999-07-02");    
 select extract(year_month from "1999-07-0201:02:03");  
 select extract(day_minute from "1999-07-0201:02:03");  
 
/* 返回日期date是西元0年至今多少天(不计算1582年以前)
  to_days(date)    */
 select to_days(19971007);    
 select to_days('1997-10-07');    
   
/*  给出西元0年至今多少天返回date值(不计算1582年以前)
   from_days(n)   */
  select from_days(729669);    
   
 /*  根据format字符串格式化date值  
  date_format(date,format)    
 (在format字符串中可用标志符:  
  %a     缩写星期名
  %b      缩写月名
  %c    月,数值
  %D    带有英文前缀的月中的天
  %d    月的天,数值(00-31)
  %e    月的天,数值(0-31)
  %f    微秒
  %H    小时 (00-23)
  %h    小时 (01-12)
  %I    小时 (01-12)
  %i    分钟,数值(00-59)
  %j    年的天 (001-366)
  %k    小时 (0-23)
  %l    小时 (1-12)
  %M    月名
  %m    月,数值(00-12)
  %p    AM 或 PM
  %r    时间,12-小时(hh:mm:ss AM 或 PM)
  %S    秒(00-59)
  %s    秒(00-59)
  %T    时间, 24-小时 (hh:mm:ss)
  %U    周 (00-53) 星期日是一周的第一天
  %u    周 (00-53) 星期一是一周的第一天
  %V    周 (01-53) 星期日是一周的第一天,与 %X 使用
  %v    周 (01-53) 星期一是一周的第一天,与 %x 使用
  %W    星期名
  %w    周的天 (0=星期日, 6=星期六)
  %X    年,其中的星期日是周的第一天,4 位,与 %V 使用
  %x    年,其中的星期一是周的第一天,4 位,与 %v 使用
  %Y    年,4 位
  %y    年,2 位
*/
  select date_format('2018-01-12 22:23:00','%w %m %Y');    
  select date_format('1997-10-04 22:23:00','%h:%i:%s');    
  select date_format('1997-10-04 22:23:00','%d %y %a%d %m %b %j');   
  select date_format('1997-10-04 22:23:00','%h %k %i%r %t %s %w');    
  
 
 
/*理小时、分钟和秒格式化time值  
&time_format(time,format)  
 和date_format()类似,但time_format只处理小时、分钟和秒(其
余符号产生一个null值或0)  */
  select time_format('2018-01-12 22:23:00','%H');    
 
 
/*  以'yyyy-mm-dd'或yyyymmdd格式返回当前日期值(根据返回值所
  处上下文是字符串或数字)   
 curdate()     current_date()  
   */
 select curdate();  
 select curdate() + 0;    
  
 
/*  以'hh:mm:ss'或hhmmss格式返回当前时间值(根据返回值所处上下文是字符串或数字) 
  curtime()     current_time()  */
 select curtime();    
 select curtime() + 0;    
   
/*  以'yyyy-mm-dd hh:mm:ss'或yyyymmddhhmmss格式返回当前日期时间(根据返回值所处上下文是字符串或数字)
now()    
sysdate()    
current_timestamp()  
     */
 select now();    
 select now() + 0;     
 select sysdate();    
 select sysdate() + 0; 
 select current_timestamp();    
 select current_timestamp() + 0; 
 
/* 返回一个unix时间戳(从'1970-01-01 00:00:00'gmt开始的秒数,date默认值为当前时间)   
  unix_timestamp()    
  unix_timestamp(date)    
*/
 select unix_timestamp();    
 select unix_timestamp('1997-10-04 22:23:00');    
 
 
/* 以'yyyy-mm-dd hh:mm:ss'或yyyymmddhhmmss格式返回时间戳的值(根据返回值所处上下文是字符串或数字) 
  from_unixtime(unix_timestamp)   */
  select from_unixtime(875996580);    
  select from_unixtime(875996580) + 0;    


/* 以format字符串格式返回时间戳的值
   from_unixtime(unix_timestamp,format)     */
 select from_unixtime(unix_timestamp(),'%Y %d %m %h:%i:%s %x');    
  
/* 以'hh:mm:ss'或hhmmss格式返回秒数转成的time值(根据返回值所处上下文是字符串或数字)
  sec_to_time(seconds)    */
 select sec_to_time(2378);    
 select sec_to_time(2378) + 0;    
  
 
/*  返回time值有多少秒 
time_to_sec(time)    
   */
  select time_to_sec('22:23:00');    
  select time_to_sec('00:39:38');    
 
 
 /*转换函数

二进制,同带binary前缀的效果 : BINARY    
字符型,可带参数 : CHAR(N)     n代表长度
日期 : DATE     
时间: TIME     
日期时间型 : DATETIME     
浮点数 : DECIMAL      
整数 : SIGNED     
无符号整数 : UNSIGNED 
cast
用法:cast(字段 as 数据类型) [当然是否可以成功转换,还要看数据类型强制转化时注意的问题]*/
 select cast(3.12 as unsigned) ;
 select cast(3.12 as char(2)) ;
 
 /*转换函数
convert: 
二进制,同带binary前缀的效果 : BINARY    
字符型,可带参数 : CHAR(N)     n代表长度
日期 : DATE     
时间: TIME     
日期时间型 : DATETIME     
浮点数 : DECIMAL      
整数 : SIGNED     
无符号整数 : UNSIGNED 
用法:convert(字段,数据类型)*/
 select convert(21.0021 ,CHAR(6) ) ;

转载于:https://my.oschina.net/qflood/blog/1607476

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL 5.7提供了丰富的时间函数来处理日期和时间。根据官方文档,一些常用的时间函数包括: 1. 获取当前日期和时间:使用NOW()、CURRENT_TIMESTAMP()、SYSDATE()或CURRENT_TIMESTAMP函数来获取当前的日期时间值。 2. 获取当前时间:可以使用CURTIME()、CURRENT_TIME()或TIME()函数来获取当前的时间。 3. 时间加减间隔:使用DATE_ADD()函数可以在日期或时间上添加一个间隔。可以使用DATE_SUB()函数在日期或时间上减去一个间隔。 4. 日期和时间的格式化:使用DATE_FORMAT()函数可以将日期和时间值格式化为特定的格式。 5. 提取时间部分:使用TIME()函数可以提取传递表达式的时间部分。 这些只是MySQL 5.7提供的一部分时间函数,更多的时间函数和用法可以参考MySQL官方文档中的详细说明。 引用: MySQL 关于时间函数的官方文档:https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html MySQL 官方文档中的时间函数示例:1.1. 获取 YYYY-MM-DD HH:mm:ss SELECT NOW(),CURRENT_TIMESTAMP(),SYSDATE(),CURRENT_TIMESTAMP<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [MySQL中的时间函数](https://blog.csdn.net/weixin_38192427/article/details/123365010)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值