一、MySql日期处理函数
select round(109.456,2)
-- 获取上个月的月份和年份:如果当前月份为1月,则上个月为去年的12月;否则,上个月为当前年份的上一个月。我们可以使用IF函数来实现这个逻辑 --
SELECT IF(MONTH(NOW())=1,12, MONTH(NOW())-1), IF(MONTH(NOW())=1, YEAR(NOW())-1, YEAR(NOW()))
-- 获取当前日期时间
SELECT NOW()
str_to_date(now(),'%d-%M-%Y')
SELECT DATE_FORMAT('2019-03-01', '%Y') as year,DATE_FORMAT('2019-03-01', '%m') as MONTH
SELECT DATE_FORMAT(NOW()-1 , '%Y') as year,DATE_FORMAT(NOW()-1, '%m') as MONTH,DATE_FORMAT((NOW()-1), '%d') as day
-- 获取当前日期 --
select curdate()
-- 获取昨日日期 --
select date_sub(curdate(),interval 1 day)
-- 获取当前日期的前两天 --
select date_sub(curdate(),interval 2 day)
-- 获取当前日期后一天 --
select date_sub(curdate(),interval -1 day)
SELECT
CONCAT(DATE_FORMAT(LAST_DAY(NOW() – INTERVAL 1 MONTH),'%Y-%m-01'),' ', '00:00:00') as '上月开始时间',
CONCAT(LAST_DAY(NOW() – INTERVAL 1 MONTH),' ', '23:59:59') as '上月结束时间'
-- 要求获得最近一个月的数据--
SELECT * FROM your_table_name
WHERE DATE_FORMAT(your_date_column, '%Y%m') = DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), '%Y%m');
SELECT now()
WHERE DATE_FORMAT(your_date_column, '%Y%m') = DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), '%Y%m');
二、MySql数值处理函数保留两位小数
1、round(x,d),四舍五入。round(x) ,其实就是round(x,0),也就是默认d为0
select round(109.456,2);
# 109.46
2、TRUNCATE(x,d),直接截取需要保留的小数位
select TRUNCATE(109.456,2);
# 109.45
3、FORMAT(x,d),四舍五入,保留d位小数,返回string类型
select FORMAT(109.456,2);
# 109.46
4、CONVERT(x, DECIMAL(10,d)); 转型,会四舍五入,保留d位小数
select CONVERT(109.456, DECIMAL(10,2));?
#109.46
5、CEILING(x); 直接取整,个位+1
select CEILING(100.56);
#101
6、FLOOR(x); 直接取整
select FLOOR(100.56);
#100
三、Oralce数据库处理函数
当前⽇期:select TRUNC(SYSDATE) from dual;
前⼀天:select TRUNC(SYSDATE - 1) from dual;
前⼀天转换为⽇期格式: select to_char(TRUNC(sysdate-1),’fmdd’) from dual;
to_char(TRUNC(sysdate-1),‘fmdd’)
前⼀个⽉⽇期: select add_months(trunc(sysdate),-1) from dual;
前⼀个⽉:select TRUNC(add_months(trunc(sysdate),-1),’MM’) from dual;
后⼀个⽉转换为字符串:select to_char(add_months(trunc(sysdate),1),’yyyymm’) from dual;
前5年:SELECT TO_DATE(to_char(sysdate, 'yyyy')-5,'yyyy') from dual
前5个月:SELECT TO_DATE(to_char(sysdate, 'yyyymm')-5,'yyyymm') from dual
前5天:SELECT TO_DATE(to_char(sysdate, 'yyyymmdd')-5,'yyyy-mm-dd') from dual
TO_DATE(STAT_DATE,'yyyy') <= TO_DATE(to_char(sysdate, 'yyyy')-1,'yyyy') AND TO_DATE(STAT_DATE,'yyyy') >= TO_DATE(to_char(sysdate, 'yyyy')-5,'yyyy')