oracle sql生成序号生成前缀 时间戳 5位顺序号

9076人阅读
Database(17)
create sequence seq_test
minvalue 1
maxvalue 21
start with 1
increment by 1
minvalue 1 / nominvalue:最小值为1
maxvalue 21 / nomaxvalue:最大值为21
start with 1:从1开始计数
increment by 1:每次增加1
cache 20 / nocache:
&&&&&&& 缓存20个sequence值 /& 不缓存
&&&&&&& 如果缓存,则会有跳号的危险:如果指定cache值,oracle就可以预先在内存里面放置一些sequence,这样存取的快些。内存里面的取完后,oracle自动再取一组到内存。数据库突然不正常down掉,内存中的sequence就会丢失
cycle / nocycle:
&&&&&&& cycle,即如果到达最大值21后,再次从1开始
SQL& select seq_test.
----------
SQL& select seq_test.
----------
&&&&&&& nocycle:
SQL& select seq_test.
----------
SQL& select seq_test.
select seq_test.nextval from dual
ORA-08004: sequence SEQ_TEST.NEXTVAL exceeds MAXVALUE and cannot be instantiated
order& / noorder:
&&&&&&& order:guarantees sequence numbers are generated in order of request,按照请求的顺序生成sequence值。如果sequence值为时间戳比较重要,作为主键order选项没什么用
&&&&&&& noorder:does not guarantee sequence numbers are generated in order of
currval=返回sequence的当前值
nextval=增加sequence的值,然后返回sequence 值
在使用currval之前必须先使用nextval:
SQL& select seq_test.
select seq_test.currval from dual
ORA-08002: sequence SEQ_TEST.CURRVAL is not yet defined in this session
SQL& select seq_test.
----------
SQL& select seq_test.
----------
第一次使用nextval返回的是初始值,以后再使用nextvl返回的是currval+'increment by'的值:
SQL& select seq_test.
----------
SQL& select seq_test.
----------
SQL& drop sequence seq_
Sequence dropped
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1491170次
积分:11590
积分:11590
排名:第1147名
原创:203篇
转载:16篇
评论:210条
(2)(3)(1)(2)(1)(2)(1)(2)(1)(2)(1)(1)(2)(3)(2)(2)(2)(5)(2)(2)(4)(7)(3)(18)(7)(7)(10)(8)(10)(6)(5)(4)(4)(4)(6)(7)(9)(14)(10)(4)(2)(2)(4)(13)(4)(4)(9)Java开发(188)
数据库(104)
& 在网上查找了很多通过Oracle生成时间戳的方法,大部分都是比较复杂,以下这个方法应该是比较简单,而且能实现秒级及毫秒级的时间戳,推荐一下:
秒级时间戳
SQL& SELECT (SYSDATE - TO_DATE(' 8', 'YYYY-MM-DD HH24')) * 86400 FROM DUAL;
(SYSDATE-TO_DATE('','YYYY-MM-DDHH24'))*86400
-----------------------------------------------------
  用当前的时间减去日8时,得到的天数乘以24小时乘以3600秒,得到的结果就是系统时间戳。这里用8时的原因时系统所处时区为东8区。
毫秒级时间戳
SQL& SELECT (SYSDATE - TO_DATE(' 8', 'YYYY-MM-DD HH24')) *
+ TO_NUMBER(TO_CHAR(SYSTIMESTAMP(3), 'FF')) AS MILLIONS FROM DUAL;
--------------
  毫秒级的就更精确了。
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:120224次
积分:2931
积分:2931
排名:第10908名
原创:87篇
转载:473篇
译文:12篇
(21)(7)(18)(42)(57)(52)(25)(12)(26)(52)(56)(108)(98)(1)Oracle与时间戳有关的函数
- oracle -
Oracle与时间戳有关的函数
相关推荐:
Oracle Databse 9i数据库引入了一种新特性,可以存储时间戳。时间戳可以存储世纪、4位年、月、日、时(以24小时格式)、分、秒。与DATE类型相比,时间戳具
有很多函数可以用来查询和处理时间戳,表5-9中列出了这些函数。
& 函&&& 数 说&&& 明 CURRENT_TIMESTAMP() 返回一个 TIMESTAMP WITH TIME ZONE 类型的值,其中包括当前会话的日期和时间以及会话的时区 EXTRACT(
{ YEAR | MONTH | DAY |
HOUR | MINUTE | SECOND } |
{ TIMEZONE_HOUR |
TIMEZONE_MINUTE } |
{ TIMEZONE_REGION | }
TIMEZONE_ABBR }
FROM x) 从x中提取并返回年、月、日、时、分、秒或时区,其中x可以是时间戳类型或DATE类型 FROM_TZ( x, time_zone) 将TIMESTAMP类型的x转换为由time_zone指定的时区,并返回TIMESTAMP WITH TIMEZONE类型。time_zone必须被指定为+|- HH:MI格式的字符串。此函数一般将x和time_zone合并成一个值 LOCALTIMESTAMP 返回一个TIMESTAMP 类型,其中包含会话的当前日期和时间 SYSTIMESTAMP 返回一个TIMESTAMP WITH TIME ZONE类型,其中包括数据库的当前日期、时间,以及数据库时区 SYS_EXTRACT_UTC(x) 将TIMESTAMP WITH TIMEZONE类型的x转换为一个TIMESTAMP类型,其中包含了UTC时区中的日期和时间 TO_TIMESTAMP(x, [format]) 将字符串x转换为一个TIMESTAMP类型,还可以为x指定一个可选的参数format TO_TIMESTAMP_TZ(x, [format]) 将字符串x转换为一个TIMESTAMP WITH TIMEZONE类型,还可以为x指定一个可选的参数format
1. CURRENT_TIMESTAMP、LOCALTIMESTAMP和SYSTIMESTAMP
下面这个查询同时调用了CURRENT_TIMESTAMP、LOCALTIMESTAMP和SYSTIMESTAMP函数(我的会话时区和数据库时区都是PST,它比UTC晚8小时):
SELECT CURRENT_TIMESTAMP, LOCALTIMESTAMP, SYSTIMESTAMP
CURRENT_TIMESTAMP
-----------------------------------
LOCALTIMESTAMP
-----------------------------------
SYSTIMESTAMP
-----------------------------------
05-NOV-07 12.15.32.734000 PM PST
05-NOV-07 12.15.32.734000 PM
05-NOV-07 12.15.32.734000 PM -08:00
如果将TIME_ZONE设置为EST,并重新执行上面这个查询,就会得到如下输出结果:
ALTER SESSION SET TIME_ZONE = 'EST';
Session altered.
SELECT CURRENT_TIMESTAMP, LOCALTIMESTAMP, SYSTIMESTAMP
CURRENT_TIMESTAMP
-----------------------------------------------------------
LOCALTIMESTAMP
-----------------------------------------------------------
SYSTIMESTAMP
-----------------------------------------------------------
05-NOV-07 03.19.57.562000 PM EST
05-NOV-07 03.19.57.562000 PM
05-NOV-07 12.19.57.562000 PM -08:00
下面这条语句将会话时区设置会PST:
ALTER SESSION SET TIME_ZONE = 'PST';
Session altered.
2. EXTRACT函数
&&& EXTRACT函数用于从x中提取并返回年、月、日、时、分、秒或时区,其中x可以是时间戳类型或DATE类型。下面这个查询使用EXTRACT函数从由TO_DATE()返回的DATE类型中提取年、月、日:
EXTRACT(YEAR FROM TO_DATE('01-JAN-:26',
'DD-MON-YYYY HH24:MI:SS')) AS YEAR,
EXTRACT(MONTH FROM TO_DATE('01-JAN-:26',
'DD-MON-YYYY HH24:MI:SS')) AS MONTH,
EXTRACT(DAY FROM TO_DATE('01-JAN-:26',
'DD-MON-YYYY HH24:MI:SS')) AS DAY
---------- ---------- ----------
&&& 下面这个查询使用EXTRACT函数从由TO_TIMESTAMP()返回的TIMESTAMP类型中提取时、分、秒:
EXTRACT(HOUR FROM TO_TIMESTAMP('01-JAN-:26',
'DD-MON-YYYY HH24:MI:SS')) AS HOUR,
EXTRACT(MINUTE FROM TO_TIMESTAMP('01-JAN-:26',
'DD-MON-YYYY HH24:MI:SS')) AS MINUTE,
EXTRACT(SECOND FROM TO_TIMESTAMP('01-JAN-:26',
'DD-MON-YYYY HH24:MI:SS')) AS SECOND
---------- ---------- ----------
&&& 最后这个查询使用EXTRACT函数从由TO_TIMESTAMP_TZ()返回的TIMESTAMP WITH TIMEZONE类型中提取时区的时、分、秒、区域和时区缩写:
EXTRACT(TIMEZONE_HOUR FROM TO_TIMESTAMP_TZ(
'01-JAN-:26 -7:15', 'DD-MON-YYYY HH24:MI:SS TZH:TZM'))
EXTRACT(TIMEZONE_MINUTE FROM TO_TIMESTAMP_TZ(
'01-JAN-:26 -7:15', 'DD-MON-YYYY HH24:MI:SS TZH:TZM'))
EXTRACT(TIMEZONE_REGION FROM TO_TIMESTAMP_TZ(
'01-JAN-:26 PST', 'DD-MON-YYYY HH24:MI:SS TZR'))
EXTRACT(TIMEZONE_ABBR FROM TO_TIMESTAMP_TZ(
'01-JAN-:26 PST', 'DD-MON-YYYY HH24:MI:SS TZR'))
---------- ---------- ----------- ----------
3. FROM_TZ()
&&& FROM_TZ(x, time_zone)将TIMESTAMP类型的x转换为由time_zone指定的时区,并返回TIMESTAMP WITH TIMEZONE类型。time_zone必须被指定为+|- HH:MI格式的字符串。此函数一般将x和time_zone合并成一个值。 &&& 例如,下面这个查询将时间戳 07:15:31.1234和与UTC的时差-7:00合并起来:
SELECT FROM_TZ(TIMESTAMP ' 07:15:31.1234', '-7:00')
FROM_TZ(TIMESTAMP'7:15:31.1234','-7:00')
---------------------------------------------------
13-MAY-08 07.15.31. AM -07:00 &
4. SYS_EXTRACT_UTC()
&&& SYS_EXTRACT_UTC (x)用于将TIMESTAMP WITH TIMEZONE类型的x转换为一个包含UTC时区日期和时间的TIMESTAMP类型。 &&& 下面这个查询将 19:15:26 PST转换为UTC:相关推荐:
TO_DATE格式(以时间:
13:45:25为例)
yy two digits 两位年
yyy three digits
SELECT SYS_EXTRACT_UTC(TIMESTAMP ' 19:15:26 PST')
SYS_EXTRACT_UTC(TIMESTAMP'9:15:26PST')
-------------------------------------------------
18-NOV-08 03.15.26. AM &
&&& 因为在冬季PST比UTC晚8个小时,因此这个查询返回的TIMESTAMP类型的值比 19:15:26 PST早了8个小时,即18-NOV-08 03.15.26 AM.。 &&& 如果是在夏季,则返回的TIMESTAMP类型的值只比UTC早7个小时。
SELECT SYS_EXTRACT_UTC(TIMESTAMP ' 19:15:26 PST')
SYS_EXTRACT_UTC(TIMESTAMP'9:15:26PST')
-------------------------------------------------
18-MAY-08 02.15.26. AM
5. TO_TIMESTAMP()
&&& TO_TIMESTAMP(x,[format])用于将字符串x(可能是CHAR、VARCHAR2、NCHAR或NVARCHAR2)转换为一个TIMESTAMP类型,该函数中可以为x指定可选的参数format。 &&& 下面这个查询将字符串 07:15:31.1234转换为TIMESTAMP类型,格式为YYYY-MM-DD HH24:MI:SS.FF:
SELECT TO_TIMESTAMP(' 07:15:31.1234', 'YYYY-MM-DD HH24:MI:SS.FF')
TO_TIMESTAMP('7:15:31.1234','YYYY-MM-DDHH24:MI:SS.FF')
-----------------------------------------------------------------
13-MAY-08 07.15.31. AM &
6. TO_TIMESTAMP_TZ()
&&& TO_TIMESTAMP_TZ(x,[ format ])用于将字符串x转换为一个TIMESTAMP WITH TIMEZONE类型,该函数中可以为x指定可选的参数format。 &&& 下面这个查询向TO_TIMESTAMP_TZ函数传递时区PST(在格式字符串中使用TZR来识别):
SELECT TO_TIMESTAMP_TZ(' 07:15:31.1234 PST',
'YYYY-MM-DD HH24:MI:SS.FF TZR')
TO_TIMESTAMP_TZ('7:15:31.1234PST','YYYY-MM-DDHH24:MI:SS.FFTZR')
--------------------------------------------------------------------------
13-MAY-08 07.15.31. AM PST &
&&& 下面这个查询使用与UTC的时差 -7:00(-7:00在格式字符串中用TZR和TZM来识别):
SELECT TO_TIMESTAMP_TZ(' 07:15:31.',
'YYYY-MM-DD HH24:MI:SS.FF TZH:TZM')
TO_TIMESTAMP_TZ('7:15:31.','YYYY-MM-DDHH24:MI:SS.FFTZH
--------------------------------------------------------------------------
13-MAY-08 07.15.31. AM -07:00 &
7. 将字符串转换为TIMESTAMP WITH LOCAL TIME ZONE
&&& 使用CAST函数可以将一个字符串转换为TIMESTAMP WITH LOCAL TIME ZONE。第4章曾介绍过CAST(),回想一下,CAST(x AS type)将x转换为由type指定的兼容的数据库类型。 &&& 下面这个查询使用CAST()将字符串13-JUN-08转换为TIMESTAMP WITH LOCAL TIME ZONE:
SELECT CAST('13-JUN-08' AS TIMESTAMP WITH LOCAL TIME ZONE)
CAST('13-JUN-08'ASTIMESTAMPWITHLOCALTIMEZONE)
---------------------------------------------
13-JUN-08 12.00.00.000000 AM &
&&& 此查询返回的时间戳包含日期日和时间12 A.M.。 &&& 下面这个查询使用CAST()将一个更复杂的字符串转换为TIMESTAMP WITH LOCAL TIME ZONE:
SELECT CAST(TO_TIMESTAMP_TZ(' 07:15:31.1234 PST',
'YYYY-MM-DD HH24:MI:SS.FF TZR') AS TIMESTAMP WITH LOCAL TIME ZONE)
CAST(TO_TIMESTAMP_TZ('7:15:31.1234PST','YYYY-MM-DDHH24:MI:SS.FF
--------------------------------------------------------------------------
13-MAY-08 06.15.31.123400 AM &
&&& 此查询返回的时间戳包含日期日和时间6:15:31.1234 AM PST(PST是数据库时区和会话时区)。 &&& 下面这个查询与上面的查询做相同的事情,只是时区是EST:
SELECT CAST(TO_TIMESTAMP_TZ(' 07:15:31.1234 EST',
'YYYY-MM-DD HH24:MI:SS.FF TZR') AS TIMESTAMP WITH LOCAL TIME ZONE)
CAST(TO_TIMESTAMP_TZ('7:15:31.1234EST','YYYY-MM-DDHH24:MI:SS.FF
--------------------------------------------------------------------------
13-MAY-08 04.15.31.123400 AM &
&&& 此查询返回的时区包含日期日和时间4:15:31.1234 AM PST(因为PST比EST晚3小时,所以此时间戳返回的时间比实际查询的时间早3小时)。
相关推荐:相信很多人都有过统计某些数据的经历,比如,要统计财务的情况,可能要按每年,每季度,每月,甚至每个星期来分别统计。那在oracle中应该怎么来写sql语句呢,这
有很多函数可以用来查询和处理时间戳,表5-9中列出了这些函数。
明CURRENT_TIMESTAMP()返回一个
相关阅读排行
相关内容推荐
请激活账号
为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。
您的注册邮箱:
如果您没有收到激活邮件,请注意检查垃圾箱。

我要回帖

更多关于 文件名批量加前缀序号 的文章

 

随机推荐