Mysql数据库中有关时间函数的使用说明
简介说明
使用mysql的时间函数,有利于我们在进行查询等操作时,把以往时间条件需要手动输入的情况转为sql语句进行自动获取填充。例如每天需要对数据库进行数据同步,如果没有时间函数的使用的话,就意味着我们需要手动输入时间的查询条件来进行操作,而引入时间操作后,我们只需要另外在配置一个数据库的定时任务,就可以对数据同步进行自动化操作了。
下面列出了一些在工作中常用到的时间函数
获取当前时刻时间
SQL语句 | 返回示例 | SQL说明 |
---|---|---|
select now(); | 2021-02-07 15:08:44 | 返回当前日期和时间 |
select curdate(); | 2021-02-07 | 返回当前日期 |
select date(now()); | 2021-02-07 | 返回当前日期 |
select year(now()); | 2021 | 返回当前年份 |
select month(now()); | 02 | 返回当前月份 |
select day(now()); | 7 | 返回当前日期(天) |
select curtime(); | 15:08:44 | 返回当前时间 |
select hour(now()); | 15 | 返回当前小时 |
select minute(now()); | 08 | 返回当前分钟 |
select second(now()); | 44 | 返回当前秒数 |
select weekofyear(now()); | 5 | 返回当前日期为一年中的第几周 |
select dayofweek(now()); | 1 | 返回当前日期为一周中的星期几(注意:该函数中一周是从周日开始的) |
日期时间格式转换
select date_format(datetime,format);
主题 | 格式 | 描述 |
---|---|---|
年 | %Y | 4位数的年 |
月 | %b | 月份对应的英文缩写 |
月 | %M | 月份对应的英文全称 |
月 | %m | 01-12的月 |
月 | %c | 1-12的月份数值 |
日 | %d | 01-31的某月里面的第几天 |
日 | %e | 1-31的某月里面的第几天 |
日 | %D | 用th后缀表示某月中的第几天 |
日 | %j | 001-366的一年中的第几天 |
周 | %a | 星期几对应的英文缩写 |
周 | %W | 星期几对应的英文全称 |
时 | %H | 00-23的小时 |
时 | %h | 01-12的小时 |
分 | %i | 00-59的分钟 |
秒 | %S | 秒(00-59) |
秒 | %f | 微秒 |
时分秒 | %T | 返回当前的时分秒, 24-小时 (hh:mm:ss) |
日期运算函数
#日期时间向后偏移函数
select date_add(date,interval num unit);
#日期时间向前偏移函数
select date_sub(date,interval num unit);
#date表示当前的日期,或者当前的日期时间;interval是一个固定的参数;num为上面讲到的x;unit表示你要加的单位,是往后移动7天,还是7月,还是7年。
#日期做差运算函数
select datediff(end_date,start_date)
unit参数单位 | 说明 |
---|---|
year | 年 |
month | 月 |
day | 日 |
hour | 小时 |
minute | 分钟 |
second | 秒 |
week | 周数,全年第几周 |
工作中时间函数运用场景举例
#获取今天0点的日期时间 select date_format(curdate(),'%Y-%m-%d %H:%i:%s'); #获取昨天0点的日期时间 select DATE_FORMAT(date_sub(CURDATE(),INTERVAL 1 day),'%Y-%m-%d %H:%i:%s'); #获取昨天最后一秒23:59:59的日期时间 select date_sub(curdate(),interval 1 second); #获取上周的数据(假设时间字段为:order_date) where week(order_date,1) = week(now,1)-1;
本文系作者 @Mr.Lee 原创发布在 维简网。未经许可,禁止转载。