MySQL数据库日期&时间(单行)函数#date、current等函数总结

MySQL数据库中具有很多操作时间值的函数,每个时间和日期类型具有的值域及指定值的有效格式都不一样,我就频率使用多的函数进行了总结,为了熟悉这些函数,一方面我们需要看看说明文档,另一方面我们还需要实战一下练习几个栗子,这样效果更好。☟

⑴统计系统时间

SELECT NOW();     -- 2019-08-01 13:43:17
SELECT SYSDATE(); -- 2019-08-01 13:43:17

⑵提取当前时间

DATE(expr)
提取日期或时间日期表达式expr中的日期部分。
mysql> SELECT DATE(‘2003-12-31 01:02:03’);
​ -> ‘2003-12-31’

SELECT DATE('2019-08-01 01:02:03');   -- 2019-08-01

⑶ 获取当前日期

将当前日期按照’YYYY-MM-DD’ 或YYYYMMDD 格式的值返回,具体格式根据函数用在字符串或是数字语境中而定。

mysql> SELECT CURDATE();
​ -> ‘1997-12-15’
mysql> SELECT CURDATE() + 0;
​ -> 19971215
CURRENT_DATE和CURRENT_DATE()是的同义词.

SELECT CURRENT_DATE();  -- 2019-08-01
SELECT CURRENT_DATE()+0; -- 20190801
-- 查询已满30岁以上教师
SELECT * FROM teacher_info WHERE YEAR(CURRENT_DATE()) - YEAR(tbirthday) >= 30;
-- 查询入职已超过13年的教师
SELECT * FROM teacher_info WHERE YEAR(CURRENT_DATE) - YEAR(thiredate) >= 13;

测试表数据:
在这里插入图片描述
查询结果1:
在这里插入图片描述
查询结果2:
在这里插入图片描述

⑷ 获取当前时间
将当前时间以’HH:MM:SS’或 HHMMSS 的格式返回, 具体格式根据函数用在字符串或是数字语境中而定。
mysql> SELECT CURTIME();
​ -> ‘23:50:26’
mysql> SELECT CURTIME() + 0;
​ -> 235026

SELECT CURRENT_TIME();  -- 13:49:00
SELECT CURRENT_TIME()+0;  -- 144114.000000
SELECT CURRENT_TIMESTAMP();  --2019-08-01 15:02:17  [时间戳]

Java中的时间戳
  时间戳+用户编号可以用作生成的订单号

	System.out.println(System.currentTimeMillis());   --1566634993016

⑸今天的星期

  • DAY(date)
    DAY() 和DAYOFMONTH()的意义相同。
  • DAYNAME(date)
    返回date 对应的工作日名称。
    mysql> SELECT DAYNAME(‘1998-02-05’);
    ​ -> ‘周四’
  • DAYOFMONTH(date)
    返回date 对应的该月日期,范围是从 1到31。
    mysql> SELECT DAYOFMONTH(‘1998-02-03’);
    ​ -> 3
  • DAYOFWEEK(date)
    返回date (1 = 周日, 2 = 周一, …, 7 = 周六)对应的工作日索引。这些索引值符合 ODBC标准。
    mysql> SELECT DAYOFWEEK(‘1998-02-03’);
    ​ -> 3
  • DAYOFYEAR(date)
    返回date 对应的一年中的天数,范围是从 1到366。
    mysql> SELECT DAYOFYEAR(‘1998-02-03’);
    ​ -> 34
    WEEKDAY(date)
    返回date (0 = 周一, 1 = 周二, … 6 = 周日)对应的工作日索引 weekday index for
    mysql> SELECT WEEKDAY(‘1998-02-03 22:23:00’);
    -> 1
    mysql> SELECT WEEKDAY(‘1997-11-05’);
    -> 2
  • WEEKOFYEAR(date)
    将该日期的阳历周以数字形式返回,范围是从1到53。它是一个兼容度函数,相当于WEEK(date,3)。
    mysql> SELECT WEEKOFYEAR(‘1998-02-20’);
    -> 8
SELECT WEEK(CURRENT_DATE());  -- 30(一年中的第30周)
SELECT DAYOFWEEK(CURRENT_DATE); -- 5 (这周的第五天,按瑞典天数计算)
SELECT WEEKDAY(CURRENT_DATE); -- 3
SELECT DAYNAME(CURRENT_DATE); -- Thursday(星期四)

⑹计算间隔

DATEDIFF(expr,expr2)

DATEDIFF() 返回起始时间 expr和结束时间expr2之间的天数。Exprexpr2 为日期或 date-and-time 表达式。计算中只用到这些值的日期部分。

mysql> SELECT DATEDIFF(‘1997-12-31 23:59:59’,‘1997-12-30’);

​ -> 1

mysql> SELECT DATEDIFF(‘1997-11-30 23:59:59’,‘1997-12-31’);

​ -> -31

SELECT DATEDIFF(CURRENT_DATE(),‘2019-07-01’); – 31(天)

-- 查询入职已超过13周年的教师
SELECT * FROM teacher_info WHERE DATEDIFF(CURRENT_DATE,thiredate) >365*5;

⑺字符串与日期之间的格式化

SELECT STR_TO_DATE('2019年4月9日','%Y年%c月%e');  --'2019年4月9日' -> '2019-04-09'

附加:DATE_FORMAT(date,format) ,是根据format 字符串安排date 值的格式。
以下说明符可用在 format 字符串中:

说明符说明
%a工作日的缩写名称 (Sun…Sat)
%b月份的缩写名称 (Jan…Dec)
%c月份,数字形式(0…12)
%D带有英语后缀的该月日期 (0th, 1st, 2nd, 3rd, …)
%d该月日期, 数字形式 (00…31)
%e该月日期, 数字形式(0…31)
%f微秒 (000000…999999)
%H小时(00…23)
%h小时(01…12)
%I小时 (01…12)
%i分钟,数字形式 (00…59)
%j一年中的天数 (001…366)
%k小时 (0…23)
%l小时 (1…12)
%M月份名称 (January…December)
%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位数)
%%‘%’文字字符
#轻松一刻:

在这里插入图片描述


☝上述分享来源个人总结,如果分享对您有帮忙,希望您积极转载;如果您有不同的见解,希望您积极留言,让我们一起探讨,您的鼓励将是我前进道路上一份助力,非常感谢!我会不定时更新相关技术动态,同时我也会不断完善自己,提升技术,希望与君同成长同进步!

☞本人博客:https://coding0110lin.blog.csdn.net/  欢迎转载,一起技术交流吧!

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值