DATE、DATE_FORMAT及常用时间比较

  • date()
    date(datetime)
    函数返回日期或日期/时间表达式的日期部分。从datetime中取出date
  • hour()
    HOUR(time)
    返回时间的小时。 对于一天时间值,返回值的范围是0到23。 但是,TIME值的范围实际上要大得多,所以HOUR可以返回大于23的值。
  • minute()
    MINUTE(time)
    返回时间分钟,范围为0到59。
  • SECOND(time)
    返回时间秒数,范围为0到59。
SELECT hour('12:13:14');                  # 12
SELECT hour('122:13:14');                 # 122
SELECT hour('12-13-14');                  # 0
SELECT hour('2008-09-10 12:13:14');       # 12
SELECT hour('2008-09-10 122:13:14');      # null
SELECT hour('2008-09-10 12-13-14');       # 12
  • DATE_FORMAT()函数用于以不同的格式显示日期/时间数据

语法:

DATE_FORMAT(date,format)
date 参数是合法的日期。format 规定日期/时间的输出格式。

%Y 年,4 位
%y 年,2 位

select DATE_FORMAT(NOW(),'%Y')------------>2019
select DATE_FORMAT(NOW(),'%y')----------->19

%M 月名
%m 月,数值(00-12)

select DATE_FORMAT(NOW(),'%M')------->July
select DATE_FORMAT(NOW(),'%m');---------->07

%D 带有英文前缀的月中的天
%d 月的天,数值(00-31)
%e 月的天,数值(0-31)

select DATE_FORMAT(NOW(),'%D');------------>17th
select DATE_FORMAT(NOW(),'%d');----------->17
select DATE_FORMAT(NOW(),'%e')-------------->17

%H 小时 (00-23)
%k 小时 (0-23)
%h 小时 (01-12)
%I 小时 (01-12)

select DATE_FORMAT(NOW(),'%H');------------------>20
select DATE_FORMAT(NOW(),'%k');------------------->20
select DATE_FORMAT(NOW(),'%h');------------------->08
select DATE_FORMAT(NOW(),'%I');--------------------->08

%i 分钟,数值(00-59)

select DATE_FORMAT(NOW(),'%i');--------------------->09

%S 秒(00-59)
%s 秒(00-59)

select DATE_FORMAT(NOW(),'%S');---------------------->23
select DATE_FORMAT(NOW(),'%s');---------------------->23

%a 缩写英文星期名
%b 缩写英文月名
%c 月,数值

select DATE_FORMAT(NOW(),'%a');-------------->Wed
select DATE_FORMAT(NOW(),'%b');---------------->Jul
select DATE_FORMAT(NOW(),'%c');---------------->7

%j 年的天 (001-366)

select DATE_FORMAT(NOW(),'%j');------------------->198

%p AM 或 PM
%r 时间,12-小时(hh:mm:ss AM 或 PM)

select DATE_FORMAT(NOW(),'%p');-------------->PM
select DATE_FORMAT(NOW(),'%r');---------------->08:14:49 PM

%T 时间, 24-小时 (hh:mm:ss)

select DATE_FORMAT(NOW(),'%T');---------------->20:16:05

%U 周 (00-53) 星期日是一周的第一天
%u 周 (00-53) 星期一是一周的第一天

select DATE_FORMAT(NOW(),'%U');------------>28
select DATE_FORMAT(NOW(),'%u');--------------->29

%V 周 (01-53) 星期日是一周的第一天,与 %X 使用
%v 周 (01-53) 星期一是一周的第一天,与 %x 使用

%W 星期名
%w 周的天 (0=星期日, 6=星期六)

select DATE_FORMAT(NOW(),'%W');-------------->Wednesday
select DATE_FORMAT(NOW(),'%w');--------------->3

%X 年,其中的星期日是周的第一天,4 位,与 %V 使用
%x 年,其中的星期一是周的第一天,4 位,与 %v 使用

select now()
select DATE_FORMAT(NOW(),'%Y%m%d')
select DATE_FORMAT(NOW(),'%Y-%m-%d')

select DATE_FORMAT(NOW(),'%Y%m%d %T');
select DATE_FORMAT(NOW(),'%Y-%m-%d %T')

DATE_FORMAT(NOW(),'%b %d %Y %h:%i %p')----------->Dec 29 2008 11:45 PM
DATE_FORMAT(NOW(),'%m-%d-%Y')-------->12-29-2008
DATE_FORMAT(NOW(),'%d %b %y')--------->29 Dec 08
DATE_FORMAT(NOW(),'%d %b %Y %T:%f')---------->29 Dec 2008 16:25:46.635

拓展:

weekday()-- 返回当前是一周的第几天

select weekday('2019-07-15');------------>0
select weekday('2019-07-16')
select weekday('2019-07-17')
select weekday('2019-07-18')
select weekday('2019-07-19')
select weekday('2019-07-20')
select weekday('2019-07-21')--------------->6
select weekday('2019-07-22')----------------->0

可以看出weekday()是0~6,认为周一是第0天,周日是第6天

select dayofweek('2019-07-14')----------------->1

dayofweek()是1~7,认为周日是一周中的第1天,周六是第7天

2019-07-17是星期三

select WEEKDAY('2019-07-17')-------------->2

select DATE_SUB('2019-07-17',INTERVAL WEEKDAY('2019-07-17') DAY)------------------>2019-07-15

select DATE_SUB('2019-07-17',INTERVAL WEEKDAY('2019-07-17') DAY)+0----------------->20190715

select '20190715'!='2019-07-15'---------->1  假

select '20190715'='2019-07-15'---------->0  真

select 20190715='2019-07-15'------------>0 真

SELECT '2019-07-17' +0-------------->2019

SELECT '20190717' +0-------------->20190717

SELECT '20190717' +1-------------->20190718

SELECT '20180101' + '20190101'----------->40370202

SELECT * FROM 表名  WHERE  created  =  DATE_SUB('2019-07-17',INTERVAL WEEKDAY('2019-07-17') DAY)+0;  -- 获取2019年7月17日这一周周一的数据

SELECT * FROM 表名  WHERE  created  =  DATE_SUB('2019-07-17',INTERVAL WEEKDAY('2019-07-17') DAY)+1;  -- 获取2019年7月17日这一周周二的数据

参考链接:
https://blog.csdn.net/huangbaiping/article/details/64907052
https://blog.csdn.net/frees_time/article/details/81945558
https://www.cnblogs.com/weiwang/p/3245915.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值