MYSQL时间相关查询

MYSQL时间相关查询

1.函数

函数用法
DATE_ADD(date,INTERVAL expr unit)向日期添加指定的时间间隔,参数①合法的日期表达式,参数②expr为时间间隔,unit为时间单位
ADDDATE(date,INTERVAL expr unit)同上
DATE_SUB(date,INTERVAL expr unit)向日期减去指定的时间间隔,参数①合法的日期表达式,参数②expr为时间间隔,unit为时间单位
SUBDATE(date,INTERVAL expr unit)同上
PERIOD_ADD(P,N)增加N个月到阶段P,以格式YYYYMM返回值。参数P不是日期值,格式为YYMM或YYYYMM
PERIOD_DIFF(P1,P2)返回在时期P1和P2之间月数,以格式YYYYMM返回值。参数P1、P2格式为YYMM或YYYYMM
NOW()获得当前日期+时间(date + time)
SYSDATE()获得当前日期+时间(date + time)
CURRENT_TIMESTAMP()获取当前日期+时间(date + time)
UNIX_TIMESTAMP()获取当前时间的秒数
CURDATE()获得当前日期date,与CURRENT_DATE(),CURRENT_DATE同义
CURTIME()获取当前时间time,与CURRENT_TIME(), CURRENT_TIME同义
UTC_TIMESTAMP()获取 UTC 日期+时间(date + time),与UTC_TIMESTAMP同义
UTC_DATE()获取 UTC 日期,与 UTC_DATE同义
UTC_TIME()获取UTC时间(我国位于东八区,本地时间=UTC时间+8小时),与UTC_TIME同义
MONTHNAME(date)获取日期的月份(英文)名字
DAYNAME(date)获取日期的星期(英文)名字
WEEKDAY(date)获取日期的星期索引(0=星期一,1=星期二, ……6= 星期天)
DAYOFWEEK(date)获取日期的星期索引(1=星期天,2=星期一, ……7=星期六)
DAYOFMONTH(date)获取日期在月份中的日期,范围从1到31
DAYOFYEAR(date)获取日期在一年中的日数,范围从1到366
WEEKOFYEAR(date)获取日期的周数, 范围从1到52
YEARWEEK(date[,mode])获取日期的年份和周数,参数②是0或没有代表星期从星期天开始,参数②是1代表星期从星期一开始
LAST_DAY(date)获取日期在这个月的最后一天,格式YYYY-MM-DD
DATEDIFF(expr1,expr2)获取expr1-expr2的日期差
TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)获取datetime_expr2-datetime_expr1的时间单位差
EXTRACT(unit FROM date)获取日期的时间单位部分数值
DATE_FORMAT(date,format)将日期格式化,date 参数是合法的日期。format 规定日期/时间的输出格式
STR_TO_DATE(str,format)将字符串转换成格式化日期类型,format为保留部分日期格式表达式,需与字符串匹配
CONVERT(expr,type)将字符串转换成type类型,type=date只保留日期部分,type=time只保留时间部分,type=datetime保留日期+时间部分
时间单位部分函数见下

2.时间单位

TYPE值解释
MICROSECOND微秒,MICROSECOND(date)函数用于返回指定时间或日期时间值的微秒部分。范围从0到999999
SECOND秒,SECOND(date)函数用于返回指定时间或日期时间值的秒值,范围从0到59
MINUTE分,MINUTE(date)函数用于返回指定时间或日期时间值的分值,范围从0到59
HOUR时,HOUR(date)函数用于返回指定时间或日期时间值的小时值,范围从0到23
DAY日期,DAY(date)函数用于返回指定时间或日期时间值的日期部分,范围从1到31,与DAYOFMONTH(date)函数同义
WEEK星期,WEEK(date[,mode])函数用于返回指定日期的周数,范围从1到52,参数②是0或没有代表星期从星期天开始,参数②是1代表星期从星期一开始
MONTH月,MONTH()获取当前日期的月份,范围从1到12
QUARTER季度,QUARTER()获取日期在一年中的季度,范围从1到4
YEAR年,YEAR()获取日期的年份,范围从1000到9999
SECOND_MICROSECOND秒和微秒
MINUTE_MICROSECOND分钟,秒和微秒
MINUTE_SECOND分钟和秒
HOUR_MICROSECOND小时,分钟,秒和微秒
HOUR_SECOND小时, 分钟和秒
HOUR_MINUTE小时和分钟
DAY_MICROSECOND小时,分钟,秒和微秒
DAY_SECOND小时, 分钟, 秒
DAY_MINUTE小时, 分钟
DAY_HOUR小时
YEAR_MONTH年和月

3.时间格式

格式描述
%a缩写星期名
%b缩写月名
%c月,数值
%D带有英文前缀的月中的天
%d月的天,数值(00-31)
%e月的天,数值(0-31)
%f微秒
%H小时 (00-23)
%h小时 (01-12)
%I小时 (01-12)
%i分钟,数值(00-59)
%j年的天 (001-366)
%k小时 (0-23)
%l小时 (1-12)
%M月名
%m月,数值(00-12)
%pAM 或 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 位

4.示例

  1. 获取当前月份的天数 SELECT DAY(LAST_DAY(now()));
  2. 获取当天所有数据SELECT * from T WHERE DATEDIFF(created_time, NOW()) = 0SELECT * from T WHERE curdate() = DATE(created_time)SELECT * from T WHERE TO_DAYS(NOW()) = DATE(created_time)
  3. 获取昨天所有数据SELECT * from T WHERE DATEDIFF(created_time, NOW()) = -1
  4. 获取本季度所有数据SELECT * from T WHERE QUARTER(NOW()) = QUARTER(created_time)
  5. 获取上季度所有数据SELECT * from T WHERE QUARTER(DATE_SUB(NOW(),INTERVAL 1 QUARTER)) = QUARTER(created_time)
  6. 当前日期格式化SELECT DATE_FORMAT(NOW(),'%Y-%m-%d')
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值