一、Oracle trunc()函数的用法
1.select trunc(sysdate) from dual --今天的日期为2022-02-23 00:00:00
2.select trunc(sysdate, 'mm') from dual --返回当月第一天. 2022-02-01 00:00:00
3.select trunc(sysdate,'yy') from dual --返回当年第一天 2022-01-01 00:00:00
4.select trunc(sysdate,'dd') from dual --返回当前年月日 2022-02-23 00:00:00
5.select trunc(sysdate,'yyyy') from dual --返回当年第一天 2022-01-01 00:00:00
6.select trunc(sysdate,'d') from dual --(星期天)返回当前星期的第一天 2022-02-20 00:00:00
7.select trunc(sysdate, 'hh') from dual --当前时间为2022-02-23 17:00:00
8.select trunc(sysdate, 'mi') from dual --当前时间(精确到分)2022-02-23 17:01:00
9.SELECT last_day(SYSDATE) FROM dual --本月的最后一天的此时2022-02-28 17:08:16
10.SELECT to_char(last_day(sysdate), 'yyyy-mm-dd') FROM dual--本月的最后一天2022-02-28 (相当于根据9得到值后按照时间格式转为字符串)
11.SELECT add_months(last_day(sysdate), -1) FROM dual --上个月的最后一天此时2022-01-31 17:13:15
12.select to_char(trunc(add_months(last_day(sysdate), -1) + 1), 'yyyy-mm-dd') FROM dual --本月的第一天 2022-02-01(相当于先获取本月的最后一天此时再减去一个月得到上个月的最后一天此时,再加一天也就是本月的第一天此时,再根据给出的时间格式转为字符串)
/*
TRUNC(number,num_digits)
Number 需要截尾取整的数字。
Num_digits 用于指定取整精度的数字。Num_digits 的默认值为0。
TRUNC()函数截取时不进行四舍五入
*/
1.select trunc(123.458) from dual --123
2.select trunc(123.458,0) from dual --123
3.select trunc(123.458,1) from dual --123.4
4.select trunc(123.458,-1) from dual --120
5.select trunc(123.458,-4) from dual --0
6.select trunc(123.458,4) from dual --123.458
7.select trunc(123) from dual --123
8.select trunc(123,1) from dual --123
9.select trunc(123,-1) from dual --120
二、 字符串和时间互转
SELECT to_char(sysdate,'yyyymmdd') FROM dual --20220302
SELECT to_date('20220302','yyyymmdd') FROM dual --2022-03-02 00:00:00
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual; //日期转化为字符串
select to_char(sysdate,'yyyy') as nowYear from dual; //获取时间的年
select to_char(sysdate,'mm') as nowMonth from dual; //获取时间的月
select to_char(sysdate,'dd') as nowDay from dual; //获取时间的日
select to_char(sysdate,'hh24') as nowHour from dual; //获取时间的时
select to_char(sysdate,'mi') as nowMinute from dual; //获取时间的分
select to_char(sysdate,'ss') as nowSecond from dual; //获取时间的秒
三、等于、不等于
不等于:
<>,!=,~= ,^= 这四个符号据说都可以在oracle中表示不等于,但是试了之后发现<> ,!= ,^=是可以的,~=不行,需要注意的是,只有<>是标准的sql语法,可以移植,其他的都是oracle平台的特性,移植性较差,所以开发中,尽量使用<>表示不等于。
等于:
等于:=不用多说,但是要进行null的等于判断时,须使用is null 或is not null,null只能通过is null或者is not null来判断,其它操作符与null操作都是false。
例:
select * from bl_ip_dt where amount <> 800,这条语句查不出amount等于null 的记录,select * from bl_ip_dt where amount <> 800 or amount is null;才是可以的。