名站网址导航为大家提供关于数据库教程相关的教程网站知识。
45个非常有用的 Oracle 查询数据库语句小结
日期/时间 相关查询,1.获取当前月份的第一天 运行这个开始执行命令能快速返回当前月份的第一天。您可以用任何的日期值替换 “SYSDATE”来指定查询的日期。,复制具体相关代码 具体相关代码如下:,SELECT TRUNC (SYSDATE, 'MONTh') "First day of current month" FROM DUAL;,2.获取当前月份的最后一天,这个查询数据库语句类似于上面那个数据库语句,而且充分照顾到了闰年,所以当二月份有 29 号,那么就会返回 29/2 。您可以用任何的日期值替换 “SYSDATE”来指定查询的日期。,复制具体相关代码 具体相关代码如下:,SELECT TRUNC (LAST_DAY (SYSDATE)) "Last day of current month" FROM DUAL;,3.获取当前年份的第一天 每年的第一天都是1 月1日,这个查询数据库语句可以使用在存储过程中,需要对当前年份第一天做一些计算的时候。您可以用任何的日期值替换 “SYSDATE”来指定查询的日期。,复制具体相关代码 具体相关代码如下:,SELECT TRUNC (SYSDATE, 'YEAR') "Year First Day" FROM DUAL;,4.获取当前年份的最后一天,类似于上面的查询数据库语句。您可以用任何的日期值替换 “SYSDATE”来指定查询的日期。,复制具体相关代码 具体相关代码如下:,SELECT ADD_MONThS (TRUNC (SYSDATE, 'YEAR'), 12) - 1 "Year Last Day" FROM DUAL,5.获取当前月份的天数,这个数据库语句非常有用,可以计算出当前月份的天数。您可以用任何的日期值替换 “SYSDATE”来指定查询的日期。,复制具体相关代码 具体相关代码如下:,SELECT CAST (TO_ChAR (LAST_DAY (SYSDATE), 'dd') AS INT) number_of_days FROM DUAL;,6.获取当前月份剩下的天数 下面的数据库语句用来计算当前月份剩下的天数。您可以用任何的日期值替换 “SYSDATE”来指定查询的日期。,复制具体相关代码 具体相关代码如下:, SELECT SYSDATE, LAST_DAY (SYSDATE) "Last", LAST_DAY (SYSDATE) - SYSDATE "Days lef,7.获取两个日期之间的天数 使用这个数据库语句来获取两个不同日期自检的天数。,复制具体相关代码 具体相关代码如下:,SELECT ROUND ( (MONThS_BETWEEN ('01-Feb-2014', '01-Mar-2012') * 30), 0) num_of_days FROM DUAL; OR S,假如如果您需要查询一些特定日期的天数,可以使用第二个查询数据库语句。这个例子是计算员工入职的天数。,8.显示当前年份截止到上个月每个月份开始和结束的日期,这个是个很聪明的查询数据库语句,用来显示当前年份每个月的开始和结束的日期,您可以使用这个进行一些类型的计算。您可以用任何的日期值替换 “SYSDATE”来指定查询的日期。,复制具体相关代码 具体相关代码如下:,SELECT ADD_MONThS (TRUNC (SYSDATE, 'MONTh'), i) start_date, TRUNC (LAST_DAY (ADD_MONThS (SYSD,9.获取直到目前为止今天过去的秒数(从 00:00 开始算),复制具体相关代码 具体相关代码如下:,SELECT (SYSDATE - TRUNC (SYSDATE)) * 24 * 60 * 60 num_of_sec_since_morning FROM DUAL;,10.获取今天剩下的秒数(直到 23:59:59 结束),复制具体相关代码 具体相关代码如下:,SELECT (TRUNC (SYSDATE 1) - SYSDATE) * 24 * 60 * 60 num_of_sec_left FROM DUAL;,数据字典查询,11.检查在当前网站数据库模式下是否存在指定的表,这是一个简单的查询数据库语句,用来检查当前网站数据库是否有您想要创建的表,允许您重新运行创建表脚本,这个也可以检查当前用户是否已经创建了指定的表(根据这个查询数据库语句在什么环境下运行来查询)。,复制具体相关代码 具体相关代码如下:
复制具体相关代码 具体相关代码如下:
create or replace
Function GetInvitationNO(prev varchar2, num1 varchar2, num2 varchar2, sessionSetting varchar2)
Return Varchar2
Authid Current_User Is PRAGMA AUTONOMOUS_TRANSACTION;-- 需要使用“Current_User”的权限防止无法运行“Execute Immediate”开始执行命令 & “PRAGMA AUTONOMOUS_TRANSACTION”自制事务防止DML无法DDL的问题
Totalprev Varchar2(50);
hassequences Number;
ReNO varchar2(50);
Begin
-- 号码的前缀
Totalprev := Prev || Num1 || Num2 || Sessionsetting;
-- 创建序列
Select Count(*) Into hassequences From User_Sequences Where Sequence_Name=Totalprev;
If hassequences <> 1 Then
Execute Immediate 'Create Sequence '||Totalprev||' Increment By 1 Start With 1 maxvalue 9999999 Nocycle';
End If;
-- 通过动态的序列名取序列值,把获取的序列值转换为7位长度的字符串,长度不足用“0”填充
Execute Immediate 'Select '''|| Totalprev ||''' || to_char('||Totalprev||'.Nextval,''FM0000000'') From Dual' into ReNO;
-- to_char()中FM后跟的0代表了数字的位数,不足的用“0”填充;加上“FM”可以避免空格的出现,前面的空格是为符号位保留的,假如如果是对负数使用to_char,则空格部分是用来显示-的,因为是正数,所以不显示+,而是以空格代替
Return ReNO;
end;
测试
复制具体相关代码 具体相关代码如下:
Select GetInvitationNO('p', '1', '01', '114') From dual
-- Dual 是 Oracle中的一个实际存在的表,任何用户均可读取,经常用的在没有目标表的select数据库语句块中
关于数据库教程相关的教程网站知识今天我们就说到这里了,希望可以帮到大家。