功能:函数向日期添加指定的时间间隔。
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('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;
功能:日期 转 字符串。
SELECT DATE_FORMAT(now(),'%Y-%m-%d %H:%i:%s') AS result1,
DATE_FORMAT(now(),'%Y-%m-%d') AS result2;
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;
SELECT to_char(trunc(add_months(last_day(sysdate), -1) + 1), 'yyyy-mm-dd') "本月第一天",
to_char(last_day(sysdate), 'yyyy-mm-dd') "本月最后一天"
FROM dual;
--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