SQL:MySql中日期函数

5、MySql中日期函数

5.1、now()&sysdate(),CURDATE(),CURTIME()获取时间

SELECT now(),curdate(),curtime()-- now()显示当前时间的年月日时分秒
-- sysdate()动态获取当前日期时间
-- now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值。
select now(),sysdate();
-- 2021-06-26 09:34:15

-- curdate() 显示当前时间的年月日
select curdate();
-- 2021-06-26

-- curtime() 显示当前时间的时分秒
select curtime();
-- 09:34:15
5.1.2、OrderDate 时间列

SQL 创建带有日期时间列(OrderDate)

自带时间列的表,自动生成时间

CREATE TABLE Orders(
    -- 时间列,自动生成时间日期
	OrderDate datetime NOT NULL DEFAULT NOW(),
)

5.2、date() /timestampdiff() 时间差

  • DATE(date) 函数提取日期或日期/时间表达式的日期部分。
  • month (date) 函数提取月份或表达式中的月份。
  • YEAR(date) 函数提取年份或表达式中的年份。
-- DATE(date);
select date(now());
-- 2021-06-26 --> 26

-- month (date)
select month(now());
-- 2021-06-26 --》6

-- YEAR(date)
select month(now());
-- 2021-06-26 --》2021
  • TIMESTAMPDIFF(interval,time_start,time_end) 计算两个时间差函数

    -- 两个时间相隔多少天
    TIMESTAMPDIFF( DAY, '2017-12-01 12:15:12','2018-01-01 7:18:20')
    -- 两个时间相隔多少月
    TIMESTAMPDIFF( MONTH, '2017-11-01 12:15:12','2018-01-01 12:15:12')
    -- 两个时间相隔多少年
    	(year
    -- 两个时间相隔多少星期
    	(week
    

5.3、extract()函数

  • 用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。
-- EXTRACT(unit FROM date)
-- extract(unit from date)
unit参数
second
minute
HOUR
DAY
WEEK
MONTH
quarter季节
YEAR
-- 语法格式
SELECT
	Student.Sage,
	EXTRACT( YEAR FROM Sage ) AS,
	extract( QUARTER FROM Sage ) AS 季节,
	extract( month from Sage ) as,
	extract( WEEK FROM Sage ) AS,
	extract( DAY FROM Sage ) AS,
	extract( HOUR FROM Sage ) AS,
	extract( MINUTE FROM Sage ) AS,
	extract( second FROM Sage ) ASFROM
	Student
where
  SId=02;

在这里插入图片描述

5.4、date_add() & date_sub()函数

  • DATE_ADD() 函数向日期添加指定的时间间隔。
  • DATE_SUB() 函数从日期减去指定的时间间隔。
-- 语法格式
-- 添加指定时间间隔
date_add(date,INTERVAL expr type)
-- 减去指定时间间隔
DATE_SUB(date,INTERVAL expr type)

同上 extract()函数参数

SELECT
	Sage,
	-- Sage 年份加1年
	date_add( Sage, INTERVAL 1 year ) AS Sage2,
	-- Sage 月份加2月
	DATE_ADD(Sage,INTERVAL 2 MONTH ) as month2,
	-- Sage 天数加3天
	DATE_ADD(Sage,INTERVAL 3 DAY ) as day2,
	-- Sage 时加4小时
	DATE_ADD(Sage,INTERVAL 4 hour ) as hour2,
	-- Sage 分钟加10分钟
	DATE_ADD(Sage,INTERVAL 10 minute ) as minute2,
	-- Sage 加15秒
	DATE_ADD(Sage,INTERVAL 15 second ) as second2
FROM
	Student;

5.5、获取当月某天

 -- 获取当前日期
select curdate(); 
-- 获取当月最后一天。
select last_day(curdate()); 
-- 获取本月第一天
select DATE_ADD(curdate(),interval -day(curdate())+1 day);  
-- 获取下个月的第一天
select date_add(curdate()-day(curdate())+1,interval 1 month); 
-- 获取当前月的天数
select DATEDIFF(date_add(curdate()-day(curdate())+1,interval 1 month ),DATE_ADD(curdate(),interval -day(curdate())+1 day)) from dual; 
-- 获取上月第一天
select date_add(curdate()-day(curdate())+1,interval -1 month); 
-- 获取上月最后一天; 
select last_day(date_add(curdate()-day(curdate())+1,interval -1 month)) 

5.5、datediff() 函数

  • DATEDIFF() 函数返回两个日期之间的天数。
-- 语法格式
datediff(date1,date2)
-- date1 和 date2 参数是合法的日期或日期/时间表达式。

-- 注释:只有值的日期部分参与计算。
-- 日期之间相距5天
SELECT DATEDIFF('2008-11-30','2008-11-25') AS DiffDate;

5.6、date_format() 函数

  • DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。
  • TIME_FORMAT(time,format) 时间格式化
-- 语法格式
DATE_FORMAT(date,format)
-- date 参数是合法的日期。format 规定日期/时间的输出格式。
格式描述
%a缩写星期名, 英文缩写
%b缩写月名,英文缩写
%c月,数值(01-12)
%d月的天数,数值(00-31)
%e月的天数,数值(0-31)
%f微秒
%H小时(00-23)
%h小时(01-12)
%i分钟,数值(00-59)
%k小时(0-23)
%l小时(1-12)
%M月名
%m月,数值(00-12)
%pAM 或 PM
%r时间,12-小时(hh:mm:ss AM 或 PM)
%s秒(00-59)
%T时间, 24-小时(hh:mm:ss)
%U周(00-53)星期日是一周的第一天
%u周(00-53)星期一是一周的第一天
%W星期名
%Y年份,4 位yyyy
%y年份,2 位 yy
-- 缩写英文月 月的天 年4位 小时12制 分钟数值 am/pm
select DATE_FORMAT(NOW(),'%b %d %Y %h:%i %p') as '月日年时分am/pm';
-- 月数值 天数 年4位
select DATE_FORMAT(NOW(),'%m-%d-%Y') as '月日年';
-- 月天数数值 缩写英文月 年2位
select DATE_FORMAT(NOW(),'%d %b %y') as '日月年';
-- 日 月 年 时间 微秒
select DATE_FORMAT(NOW(),'%d %b %Y %T:%f') as '日月年时间微秒';
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值