mysql-常用时间日期函数

mysql-常用时间日期函数
函数释义使用案例结果
CURDATE()
CURRENT_DATE()
将当前日期按照"YYYY-MM-DD"或者"YYYYMMDD"格式的值返回,具体格式根据函数用在字符串或是数字语境中而定SELECT CURDATE(), CURRENT_DATE() FROM DUAL;2021-11-22 2021-11-22
CURRENT_TIMESTAMP()
LOCALTIME()
NOW()
SYSDATE()
这四个函数作用相同,返回当前日期和时间值,格式为"YYYY_MM-DD HH:MM:SS"或"YYYYMMDDHHMMSS",具体格式根据函数用在字符串或数字语境中而定select CURRENT_TIMESTAMP(), LOCALTIME(), NOW(), SYSDATE() from DUAL;2021-11-22 21:05:17
2021-11-22 21:05:17
2021-11-22 21:05:17
2021-11-22 21:05:17
UNIX_TIMESTAMP()
UNIX_TIMESTAMP(date)
前者返回一个格林尼治标准时间1970-01-01 00:00:00到现在的秒数,后者返回一个格林尼治标准时间1970-01-01 00:00:00到指定时间的秒数select UNIX_TIMESTAMP(), UNIX_TIMESTAMP(NOW()-1) from DUAL;1637587448
1637587447
FROM_UNIXTIME(date)和UNIX_TIMESTAMP互为反函数,把UNIX时间戳转换为普通格式的时间 select FROM_UNIXTIME(1637581619) from DUAL;2021-11-22 19:46:59
UTC_DATE()
UTC_TIME()
前者返回当前UTC(世界标准时间)日期值,其格式为"YYYY-MM-DD"或"YYYYMMDD";
后者返回当前UTC时间值,其格式为"HH-MM-SS"或"HHMMSS"。具体使用哪种取决于函数用在字符串还是数字语境中
select UTC_DATE(), UTC_TIME() from DUAL;2021-11-22
13:28:48
MONTH(date)
MONTHNAME(date)
前者返回指定日期中的月份,后者返回指定日期中的月份的名称 select MONTH(now()), MONTHNAME(now()) from DUAL;11
November
DAYNAME(d)
DAYOFWEEK(d)
WEEKDAY(d)
DAYNAME(d)返回d对应的工作日的英文名称,如Sunday、Monday等;DAYOFWEEK(d)返回的对应一周中的索引,1表示周日、2表示周一;WEEKDAY(d)表示d对应的工作日索引,0表示周一,1表示周二select DAYNAME(NOW()), DAYOFWEEK(NOW()), WEEKDAY(NOW()) from DUAL;Monday
2
0
WEEK(d)
WEEKOFYEAD(d)
前者计算日期d是一年中的第几周,后者计算某一天位于一年中的第几周select WEEK(NOW()), WEEKOFYEAR(NOW()) from DUAL;47
47
DAYOFYEAR(d)
DAYOFMONTH(d)
前者返回d是一年中的第几天,后者返回d是一月中的第几天SELECT DAYOFYEAR(NOW()), DAYOFMONTH(NOW()) FROM DUAL;326
22
YEAR(date)
MONTH(date)
DAY(date)
QUARTER(date)
MINUTE(time)
SECOND(time)
YEAR(date)返回指定日期对应的年份,范围是1970~2069;MONTH(date)返回月份,DAY(date)返回具体哪一天,QUARTER(date)返回date对应一年中的季度,范围是1~4;MINUTE(time)返回time对应的分钟数,范围是0~59;SECOND(time)返回制定时间的秒值SELECT YEAR(NOW()), MONTH(NOW()),DAY(NOW()),QUARTER(NOW()), MINUTE(NOW()), SECOND(NOW()) FROM DUAL;2022
2
10
1
9
56
EXTRACE(type FROM date)从日期中提取一部分,type可以是YEAR、YEAR_MONTH、DAY_HOUR、DAY_MICROSECOND、DAY_MINUTE、DAY_SECONDSELECT EXTRACT(YEAR FROM NOW()) FROM DUAL;2021
TIME_TO_SEC(time)返回以转换为秒的time参数,转换公式为"3600*小时 + 60*分钟 + 秒"SELECT TIME_TO_SEC(NOW()) FROM DUAL;78382
SEC_TO_TIME()和TIME_TO_SEC(time)互为反函数,将秒值转换为时间格式SELECT SEC_TO_TIME(73922) FROM DUAL;20:32:02
DATE_ADD(date,INTERVAL expr type)
ADDDATE(date,INTERVAL expr type)
返回将起始时间加上expr type之后的时间,比如DATE_ADD('2010-12-31 23:59:59', INTERVAL 1 SECOND)表示的就是把第一个时间加1秒SELECT DATE_ADD(NOW(),INTERVAL 1 SECOND), ADDDATE(NOW(),INTERVAL 1 SECOND) FROM DUAL;2021-11-22 21:49:50 2022-11-22 21:49:49
DATE_SUB(date,INTERVAL expr type)
SUBDATE(date,INTERVAL expr type)
回将起始时间减去expr type之后的时间SELECT DATE_SUB(NOW(),INTERVAL 1 DAY), SUBDATE(NOW(),INTERVAL 1 YEAR);2021-11-21 21:51:44br> 2020-11-22 21:51:44
ADDTIME(date,expr)
SUBTIME(date,expr)
前者进行date的时间加操作;
后者进行date的时间减操作,expr 是一个时间表达式
SELECT ADDTIME(NOW(), '1:1:1'), SUBTIME(NOW(), '5:10:37') FROM DUAL;2021-11-22 22:57:19 2021-11-22 16:45:41
timestampdiff(type,date1, date2);
DATEDIFF(date1, date2)
前者有参数设置,可以精确到天(DAY)、小时(HOUR),分钟(MINUTE)和秒(SECOND),使用起来比datediff函数更加灵活。对于比较的两个时间,时间小的放在前面,时间大的放在后面;
后者返回值是相差的天数,不能定位到小时、分钟和秒,时间大的放前面
select timestampdiff(DAY,'2021-12-08 21:40:05', '2021-12-09 21:40:05') a, DATEDIFF('2021-12-08 21:40:05', '2021-12-09 21:40:05') b;;1 -1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值