Mysql / Oracle 中的日期

1、mysql中的日期

1.1、DATE_ADD(date, INTERVAL expr type)、DATE_SUB(date, INTERVAL expr type)

功能:函数向日期添加指定的时间间隔。
date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。

select now() 'now',
	   DATE_ADD(now(),INTERVAL 2 DAY) 'now+2day';

在这里插入图片描述

select STR_TO_DATE('20210228','%Y%m%d') 'day',
	   DATE_ADD(STR_TO_DATE('20210228','%Y%m%d'),INTERVAL 1 DAY) 'day+1day';

在这里插入图片描述

type 参数可以是下列值:
MICROSECOND, SECOND 秒, MINUTE 分, HOUR 时, DAY, 天 WEEK, MONTH 月, QUARTER, YEAR 年, SECOND_MICROSECOND, MINUTE_MICROSECOND, MINUTE_SECOND, HOUR_MICROSECOND, HOUR_SECOND, HOUR_MINUTE, DAY_MICROSECOND, DAY_SECOND, DAY_MINUTE, DAY_HOUR, YEAR_MONTH

select STR_TO_DATE('20210228','%Y%m%d') 'day',
	   DATE_SUB(STR_TO_DATE('20210228','%Y%m%d'),INTERVAL 1 DAY) 'day-1day',
	   DATE_SUB(STR_TO_DATE('20210228','%Y%m%d'),INTERVAL 2 MONTH) 'month-2month';

在这里插入图片描述

select 
now() 'now', 
DATE_ADD(now(),INTERVAL -3 MONTH) 'now-3month',
DATE_ADD(DATE_ADD(now(),INTERVAL -3 MONTH),INTERVAL -7 DAY) 'now-3month-7day';

在这里插入图片描述

 
select  STR_TO_DATE('20210228','%Y%m%d') '年月日转日期', 
		DAY(STR_TO_DATE('20210228','%Y%m%d')) '获取当前天数',
		DATE_ADD(STR_TO_DATE('20210228','%Y%m%d'),interval - DAY(STR_TO_DATE('20210228','%Y%m%d'))+1 DAY) '当月第一天+',
		DATE_SUB(STR_TO_DATE('20210228','%Y%m%d'),interval DAY(STR_TO_DATE('20210228','%Y%m%d'))-1 DAY) '当月第一天-',
		last_day(curdate()) '当月最后一天',
		DATE_ADD(STR_TO_DATE('20210228','%Y%m%d'),INTERVAL 1 DAY) '当前日期+1天';

在这里插入图片描述

1.2、STR_TO_DATE(str,format)

功能:字符串 转 日期。

SELECT STR_TO_DATE('2021-07-18 16:20:30','%Y-%m-%d %H:%i:%s') AS result1,
	   STR_TO_DATE('2021-07-18 16:20:30','%Y-%m-%d') AS result2;

在这里插入图片描述

1.3、DATE_FORMAT(date,format)

功能:日期 转 字符串。

SELECT DATE_FORMAT(now(),'%Y-%m-%d %H:%i:%s') AS result1,
	   DATE_FORMAT(now(),'%Y-%m-%d') AS result2;

在这里插入图片描述

1.4、获取当前日期

select curdate(),now();

在这里插入图片描述

1.5、获取当月周第一天最后一天等

 SELECT DATE_FORMAT( DATE_SUB( DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY), INTERVAL 1 WEEK), '%Y-%m-%d 00:00:00') AS '上周一',
		DATE_FORMAT( SUBDATE(CURDATE(), WEEKDAY(CURDATE()) + 1), '%Y-%m-%d 23:59:59') AS '上周末';
		DATE_SUB( DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY), INTERVAL 1 WEEK) AS '上周一(简)',
		SUBDATE(CURDATE(), WEEKDAY(CURDATE()) + 1) AS '上周末(简)',
		STR_TO_DATE('20231128','%Y%m%d') '年月日转日期', 
		DAY(STR_TO_DATE('20210228','%Y%m%d')) '获取当前天数',
		DATE_ADD(STR_TO_DATE('20210228','%Y%m%d'),interval - DAY(STR_TO_DATE('20210228','%Y%m%d'))+1 DAY) '当月第一天+',
		DATE_SUB(STR_TO_DATE('20210228','%Y%m%d'),interval DAY(STR_TO_DATE('20210228','%Y%m%d'))-1 DAY) '当月第一天-',
		last_day(curdate()) '当月最后一天',
		DATE_ADD(STR_TO_DATE('20210228','%Y%m%d'),INTERVAL 1 DAY) '当前日期+1天';

在这里插入图片描述

2、Oracle中的日期

2.1、日期加减法

SELECT SYSDATE "当前时间",
       SYSDATE + INTERVAL '1' YEAR "加一年",
       SYSDATE + INTERVAL '-1' YEAR "减一年",
       SYSDATE + INTERVAL '1' MONTH "加一月",
       SYSDATE + INTERVAL '1' DAY "加一天",
       SYSDATE + INTERVAL '1' hour "加一小时",
       SYSDATE + INTERVAL '1' minute "加一分钟",
       SYSDATE + INTERVAL '1' SECOND "加一秒"
FROM dual;

2.2、日期月份第一天和最后一天

SELECT to_char(trunc(add_months(last_day(sysdate), -1) + 1), 'yyyy-mm-dd') "本月第一天", 
       to_char(last_day(sysdate), 'yyyy-mm-dd') "本月最后一天" 
FROM dual;

2.3、trunc函数

--Oracle trunc()函数的用法 
/**************日期********************/
SELECT trunc(SYSDATE) FROM dual; --2022/4/25  今天的日期为2022-4-25 
SELECT trunc(SYSDATE, 'mm') FROM dual; --2022/4/1    返回当月第一天. 
SELECT trunc(SYSDATE, 'yy') FROM dual; --2022/1/1     返回当年第一天 
SELECT trunc(SYSDATE, 'dd') FROM dual; --2022/4/25    返回当前年月日 
SELECT trunc(SYSDATE, 'yyyy') FROM dual; --2022/1/1   返回当年第一天 
SELECT trunc(SYSDATE, 'd') FROM dual; --2022/4/24 (星期天)返回当前星期的第一天 
SELECT trunc(SYSDATE, 'hh') FROM dual; --2022/4/25 16:00:00   当前时间为2022/4/25 16:23:26
SELECT trunc(SYSDATE, 'mi') FROM dual; --2022/4/25 16:23:00   TRUNC()函数没有秒的精确 

/***************数字********************/
/* 
  TRUNC(number,num_digits) 
  Number 需要截尾取整的数字。 
  Num_digits 用于指定取整精度的数字。Num_digits 的默认值为0。 
  TRUNC()函数截取时不进行四舍五入 
*/
SELECT trunc(123.458) FROM dual; --123 
SELECT trunc(123.458, 0) FROM dual; --123 
SELECT trunc(123.458, 1) FROM dual; --123.4 
SELECT trunc(123.458, -1) FROM dual; --120 
SELECT trunc(123.458, -4) FROM dual; --0 
SELECT trunc(123.458, 4) FROM dual; --123.458 
SELECT trunc(123) FROM dual; --123 
SELECT trunc(123, 1) FROM dual; --123 
SELECT trunc(123, -1) FROM dual; --120
  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值