trunc

oracle 日期格式

扶醉桌前 提交于 2019-12-20 15:30:01
to_date("要转换的字符串","转换的格式") 两个参数的格式必须匹配,否则会报错。 即按照第二个参数的格式解释第一个参数。 to_char(日期,"转换格式" ) 即把给定的日期按照“转换格式”转换。 转换的格式: 表示year的:y 表示年的最后一位 yy 表示年的最后2位 yyy 表示年的最后3位 yyyy 用4位数表示年 表示month的:mm 用2位数字表示月;mon 用简写形式 比如11月或者nov ;month 用全称 比如11月或者november 表示day的:dd 表示当月第几天;ddd表示当年第几天;dy 当周第几天 简写 比如星期五或者fri;day当周第几天 全写 比如星期五或者friday。 表示hour的:hh 2位数表示小时 12进制; hh24 2位数表示小时 24小时 表示minute的:mi 2位数表示分钟 表示second的:ss 2位数表示秒 60进制 表示季度的:q 一位数 表示季度 (1-4) 另外还有ww 用来表示当年第几周 w用来表示当月第几周。 24小时制下的时间范围:00:00:00-23:59:59 12小时制下的时间范围:1:00:00-12:59:59 比如: select to_char(sysdate,'yy-mm-dd hh24:mi:ss') from dual //显示:08-11-07 13:22:42

oracle相关时间计算,得到季度第一天、最后一天

霸气de小男生 提交于 2019-12-19 23:37:55
------------------------------------------------ Oracle 日期------------------------------------------ -- 本季度第一天 SELECT to_char(TRUNC(SYSDATE, 'Q'), 'YYYY-MM-DD') FROM dual; -- 上个季度最后一天(可以用本季度第一天减去1得到) SELECT to_char(TRUNC(SYSDATE, 'Q') - 1, 'YYYY-MM-DD') FROM dual; -- 上个季度第一天(本季度第一天 减 3个月) SELECT to_char(add_months(TRUNC(SYSDATE, 'Q'), -3), 'YYYY-MM-DD') FROM dual; -- 上个季度第一天(本季度减一个月之后的月份的最后一天) select to_char(last_day(add_months(trunc(sysdate, 'Q'), -1)), 'yyyy-mm-dd') from dual --№1: 取得当前日期是本月的第几周 select to_char(sysdate,'YYYYMMDD W HH24:MI:SS') from dual; select to_char(sysdate, 'W') from dual

Oracle trunc函数的使用

三世轮回 提交于 2019-12-06 02:53:20
1. 对日期的操作 2. 对数字的操作 1、对日期的操作 /**************日期********************/ SELECT TRUNC(SYSDATE) FROM DUAL; --2019/11/29 今天的日期为2019/11/29 SELECT TRUNC(SYSDATE, 'MM') FROM DUAL; --2019/11/01 返回当月第一天. SELECT TRUNC(SYSDATE,'YY') FROM DUAL; --2019/11/01 返回当年第一天 SELECT TRUNC(SYSDATE,'YYYY') FROM DUAL; --2019/01/01 返回当年第一天 SELECT TRUNC(SYSDATE,'DD') FROM DUAL; --2019/11/29 返回当前年月日 SELECT TRUNC(SYSDATE,'D') FROM DUAL; --2019/11/24 (星期天)返回当前星期的第一天 SELECT TRUNC(SYSDATE, 'HH24') FROM DUAL; --2019/11/29 17:00:00 当前时间为17:11 SELECT TRUNC(SYSDATE, 'MI') FROM DUAL; --2019/11/29 17:11:00 TRUNC()函数没有秒的精确 2、对数字的操作 /**

delphi 格式转换

戏子无情 提交于 2019-12-06 02:24:17
TO_CHAR 是把日期或数字转换为字符串 TO_DATE 是把字符串转换为数据库中得日期类型转换函数 TO_NUMBER 将字符转化为数字 TO_CHAR 使用TO_CHAR函数处理数字 TO_CHAR(number, '格式') TO_CHAR(salary,’$99,999.99’); 使用TO_CHAR函数处理日期 TO_CHAR(date,’格式’);  TO_NUMBER 使用TO_NUMBER函数将字符转换为数字 TO_NUMBER(char[, '格式']) TO_DATE 使用TO_DATE函数将字符转换为日期 TO_DATE(char[, '格式']) 数字格式格式 9 代表一个数字 0 强制显示0 $ 放置一个$符 L 放置一个浮动本地货币符 . 显示小数点 , 显示千位指示符  日期格式 格式控制 描述 YYYY、YYY、YY 分别代表4位、3位、2位的数字年 YEAR 年的拼写 MM 数字月 MONTH 月的全拼 MON 月的缩写 DD 数字日 DAY 星期的全拼 DY 星期的缩写 AM 表示上午或者下午 HH24、HH12 12小时制或24小时制 MI 分钟 SS 秒钟 SP 数字的拼写 TH 数字的序数词 “特殊字符” 假如特殊字符 HH24:MI:SS AM 15:43:20 PM 日期例子: SELECT TO_DATE('2006-05-01

数据库oracle基础语句

心已入冬 提交于 2019-12-05 14:02:50
一、运算符 算术运算符:+ - * / 可以在select 语句中使用 连接运算符:|| select deptno|| dname from dept; 比较运算符:> >= = != < <= like between is null in 逻辑运算符:not and or 集合运算符: intersect ,union, union all, minus 要求: 对应集合的列数和数据类型相同 查询中不能包含long 列 列的标签是第一个集合的标签 使用order by时,必须使用位置序号,不能使用列名 例:集合运算符的使用: 复制代码 代码如下: intersect ,union, union all, minus select * from emp intersect select * from emp where deptno=10 ; select * from emp minus select * from emp where deptno=10; select * from emp where deptno=10 union select * from emp where deptno in (10,20); --不包括重复行 select * from emp where deptno=10 union all select * from emp where

oracle定时执行存储过程

若如初见. 提交于 2019-12-05 06:24:33
一直用 sql server 建作业什么得定时执行还是很ok得 碰到oracle就懵l 真实为难我胖虎了 create or replace procedure MH_POLICEMAN_GPS_INFO_PROC as begin insert into MH_XH_HQ_POLICEMAN_INFO_TEP SELECT DISTINCT STANDARD_CODE, ORG,NAME,IDCARD,POLICENUMBER,POSITION,MOBILE,LAT,LNG, DT from ( SELECT A.*,B.LAT,B.LNG,B.DT,B.GPSID FROM ( SELECT * FROM MH_XH_HQ_POLICEMAN_INFO )A LEFT JOIN ( SELECT * FROM MH_POLICEMAN_GPS_INFO WHERE (GPSIDCARD,GPSTIME) IN( SELECT GPSIDCARD,MAX(GPSTIME) FROM MH_POLICEMAN_GPS_INFO GROUP BY GPSIDCARD) AND DT=to_char(sysdate,'yyyymmdd')) B ON A.IDCARD=B.GPSIDCARD WHERE DT is not NULL) ; commit; end MH

oracle定时执行存储过程

。_饼干妹妹 提交于 2019-12-05 05:17:44
需求 每小时进行一次查询统计数据,并将数据插入到自定义的表当中 效果 创建存储过程 create or replace procedure summary_data as v_dcppv number; v_jd12h number; v_dby number; v_xby number; v_bj number; v_bn number; v_zdzf number; v_wxzf number; v_jfzf number; v_yhdj number; v_dgzs number; v_tds number; v_tds2 number; begin --单次 select count(1) into v_dcppv from iptvsp_wt_req a where servicecode = 'JK0008' and a.instime between trunc(sysdate, 'hh') - 1 / 24 and trunc(sysdate, 'hh') - 1 / 86400 and orderstatus = 1 and order_type in (0, 1) and order_time IN (48, 30) and a.user_id like '116%'; --酒店 select count(1) into v_jd12h from iptvsp

PLSQL创建Oracle定时任务

微笑、不失礼 提交于 2019-12-04 12:18:47
1、创建任务执行的存储过程,如名称为YxtestJob,向测试表中插入数据 create or replace procedure test is begin insert into test1(name1,name2) values('wgr','test'); end; 2、定时器对应的DBMS_Jobs文件夹,右键新建(new) 3、创建任务 (1)、在what值中填写待执行的存储过程,多个可以,隔开 (2)、在间隔中填写执行时间策略;(具体写法见下述备注) 注:job的定时执行和时间间隔说明 间隔/interval是指上一次执行结束到下一次开始执行的时间间隔,当interval设置为null时,该job执行结束后,就被从队列中删除。假如我们需要该job周期性地执行,则要用‘sysdate+m’表示。 (1).每分钟执行 Interval => TRUNC(sysdate,'mi') + 1/ (24*60) 每小时执行 Interval => TRUNC(sysdate,'hh') + 1/ (24) (2).每天定时执行 例如:每天的凌晨1点执行 Interval => TRUNC(sysdate+ 1) +1/ (24) (3).每周定时执行 例如:每周一凌晨1点执行 Interval => TRUNC(next_day(sysdate,'星期一'))+1/24 (4)

delphi的取整函数round、trunc、ceil和floor

半腔热情 提交于 2019-12-04 10:41:20
1.Round(四舍六入五留双) 功能说明:对一个实数进行四舍五入。(按照银行家算法) 例: var i, j: Integer; begin i := Round(1.5); // i等于2 j := Round(2.5); // j等于2 end; 在Delphi中使用Round函数得到的答案有时与我们所预期的会不太一样:采用的是四舍六入五留双。即当舍或入位大于或小于五时按四舍五入来处理 ,而当舍或入位等于五时,就要看前面一位是什么,根据奇进偶不进,它总是返回一个偶数值。 例: i:= Round(11.5)//i等于12 i:= Round(10.5)//i等于10 这种Round其实是按照银行家算法,统计学上一般都用这种算法,比传统的"四舍五入"要科学。 如果要使用传统的"四舍五入"方法,可以使用下面函数: function RoundClassic(R: Real) 2.trunc(取得X的整数部分) 如:trunc(-123.55)=-123, floor(123.55)=123 3.ceil(取得大于等于X的最小的整数) 如:ceil(-123.55)=-123, ceil(123.15)=124 4.floor(取得小于等于X的最大的整数) 如:floor(-123.55)=-124,floor(123.55)=123 注:floor和ceil是math

Find First and Last Day of the last Quarter in ORACLE

匿名 (未验证) 提交于 2019-12-03 08:46:08
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I have a query of the form: select * from X where <some_date is in the last quarter> I'm really having trouble with getting the correct dates for the last quarter. So, say current date is 1st of July , i.e. in the third quarter, I'd like to get the 1st of April as FIRST and the 30th of June as the LAST day of the last quarter (i.e the second quarter). Googled a bit and found tons of solutions on this, but each and every one of them covered SQL Server and the funky methods which are available there are not available on our ORACLE database