mysql 时间函数案例教程

关注微信公共号:小程在线

关注CSDN博客:程志伟的博客

一、获取当前时间

CURDATE、CURTIME、NOW、SYSDATE、UTC_DATE、UTC_TIME

CURDATE() ,CURRENT_DATE()返回当前日期,只包含年、
月、日
CURTIME() , CURRENT_TIME()返回当前时间,只包含时、
分、秒
NOW() / SYSDATE() / CURRENT_TIMESTAMP() / LOCALTIME() /
LOCALTIMESTAMP()
返回当前系统日期和时间
UTC_DATE()返回UTC(世界标准时间)
日期
UTC_TIME()返回UTC(世界标准时间)
时间

SELECT CURDATE(),CURRENT_DATE(),CURTIME(),NOW(),SYSDATE(),
UTC_DATE(),UTC_TIME()
FROM DUAL;

 SELECT CURDATE(),CURDATE() + 0,CURTIME() + 0,NOW() + 0
FROM DUAL;

 二、日期与时间戳的转换

UNIX_TIMESTAMP、UNIX_TIMESTAMP、FROM_UNIXTIME

UNIX_TIMESTAMP()以UNIX时间戳的形式返回当前时间。SELECT UNIX_TIMESTAMP() -
>1634348884
UNIX_TIMESTAMP(date)将时间date以UNIX时间戳的形式返回。
FROM_UNIXTIME(timestamp)将UNIX时间戳的时间转换为普通格式的时间

SELECT UNIX_TIMESTAMP(),UNIX_TIMESTAMP('2022-06-12 15:09:32'),FROM_UNIXTIME(1655017790)
FROM DUAL;

 

三、获取月份、星期、星期数、天数等函数

YEAR(date) / MONTH(date) / DAY(date)返回具体的日期值
HOUR(time) / MINUTE(time) /
SECOND(time)
返回具体的时间值
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

SELECT now(),YEAR(now()),MONTH(now()),DAY(now()),
HOUR(CURTIME()),MINUTE(NOW()),SECOND(SYSDATE())
FROM DUAL;

 SELECT MONTHNAME('2022-06-12'),DAYNAME('2022-06-12'),WEEKDAY('2022-06-12'),
QUARTER(CURDATE()),WEEK(CURDATE()),DAYOFYEAR(NOW()),
DAYOFMONTH(NOW()),DAYOFWEEK(NOW())
FROM DUAL;

 

四、日期操作

EXTRACT

EXTRACT(type FROM date)返回指定日期中特定的部分,type指定返回的值

 SELECT NOW(),EXTRACT(SECOND FROM NOW()),EXTRACT(DAY FROM NOW()),
EXTRACT(HOUR_MINUTE FROM NOW()),EXTRACT(QUARTER FROM '2022-06-12')
FROM DUAL;

 

五、时间和秒钟转换的函数

 TIME_TO_SEC、SEC_TO_TIME

TIME_TO_SEC(time)将 time 转化为秒并返回结果值。转化的公式为: 小时*3600+分钟
*60+秒
SEC_TO_TIME(seconds)将 seconds 描述转化为包含小时、分钟和秒的时间

SELECT TIME_TO_SEC(CURTIME()),SEC_TO_TIME(55590)
FROM DUAL;

 

六、计算日期和时间的函数

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时间间隔的
日期

SELECT NOW(),DATE_ADD(NOW(),INTERVAL 1 YEAR),
               DATE_ADD(NOW(),INTERVAL -1 YEAR),
               DATE_SUB(NOW(),INTERVAL 1 month)
FROM DUAL;

 上述函数中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后的时间

SELECT DATE_ADD(NOW(), INTERVAL 1 DAY) AS col1,DATE_ADD('2022-06-13 16:03:43',INTERVAL 1 SECOND) AS col2,
ADDDATE('2022-06-13 16:03:43',INTERVAL 1 SECOND) AS col3,
DATE_ADD('2022-06-13 16:03:43',INTERVAL '1_1' MINUTE_SECOND) AS col4,
DATE_ADD(NOW(), INTERVAL -1 YEAR) AS col5, #可以是负数
DATE_ADD(NOW(), INTERVAL '1_1' YEAR_MONTH) AS col6 #需要单引号
FROM DUAL;

SELECT NOW(),ADDTIME(NOW(),20) as n,SUBTIME(NOW(),30) as n0,SUBTIME(NOW(),'1:1:3') as n1,DATEDIFF(NOW(),'2022-06-13') as n2,
TIMEDIFF(NOW(),'2022-06-13 16:03:43') as n3,FROM_DAYS(366),TO_DAYS('0000-01-01')
FROM DUAL;

 select LAST_DAY(NOW()),MAKEDATE(YEAR(NOW()),32) as n4,MAKETIME(10,21,23),PERIOD_ADD(20200101010101,10) as n5
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'),TIME_FORMAT(CURTIME(),'%h:%i:%S'),
DATE_FORMAT(NOW(),'%Y-%M-%D %h:%i:%S %W %w %T %r')
FROM DUAL;

 SELECT STR_TO_DATE('2022-June-12th 04:11:43 Sunday 0','%Y-%M-%D %h:%i:%S %W %w')
FROM DUAL;

 SELECT GET_FORMAT(DATE,'USA'),DATE_FORMAT(CURDATE(),GET_FORMAT(DATE,'USA'))
FROM DUAL;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值