文章目录0. 前言1.
java
.
sql
.
Date
转化为 Local
Date
2.
java
.
sql
.
Timestamp
转化为 Local
Date
Time3.
java
.util.
Date
转化为 Local
Date
1. 使用Instant类(时间戳)作为中介 转化为 Local
Date
2. 使用
java
.
sql
.
Date
作为中介 转化为 Local
Date
4.
java
.util.
Date
转化为 Local
Date
Time
0. 前言
若对jdk8的时间操作还不了解的,可以先看这篇文章:
Oracle
是能够安装在目前为止所有的计算机上并进行驱动运行的关系型数据库管理系统。
Oracle
数据库内部的数据操作可以通过
sql
语句执行处理,
sql
与C、Basic等语言不通,数据的访问方法和操作顺序不用正确指定,是要告诉数据库引擎要做什么就可以了。
Oracle
不仅可以通过基本的
sql
进行简单的数据操作,还可使用对标准
sql
进行了扩展的PL/
SQL
语言,可使用如IF…THEN…、WHILE、LOOP等同结构化程序语言一样的构造制作程序,还有制作函数、过程、触发器等也用PL/
SQL
语言。
1976年
oracle
最初的版本1(
Oracle
V1)发行,到1988年
Oracle
V6版本依次增加了表结合、副表查询、读取一致性、客户端/服务器结构的支持,记录排他等功能;从
Oracle
V7开始进行了大幅度的改良增加了事务处理、触发器等等功能。
Oracle
的数据类型:
文字列型:CHAR、nchar、varchar2、nvarchar2、long
数值型:number、integer、float、int等。
日期型、期间型:
date
、
timestamp
、
timestamp
with time zone等。
Oracle
数据库对象:cluster、数据库联接、触发器、外部程序库、索引、
Java
类、演算子、表、视图等等
时间戳类型,与
date
的区别在于,
date
不能精确到毫秒,而
timestamp
可以精确到毫秒,毫秒的位数为0-9位,默认为6位。
SQL
> select tp from
timestamp
_test;
--------------------------------------------------------------------------------
01-3月 -16 09.22.33.000000 上午
TIMESTAMP
WITH TIME ZONE
TIMESTAMP
WITH TIME ZONE 与 TIMES
今天做Excel导出,需要从数据库导出一个时间类型的字段create_time
然后就遇到一个
oracle
的时间类型
转换
的问题,不尽兴
转换
的话,导出的时间类似于这样
oracle
.
sql
.
TIMESTAMP
@57c8f82b
在数据库中,create_time这个字段的类型如下:
Oracle
date
和
timestamp
区别详解
1.
DATE
数据类型
这个数据类型我们实在是太熟悉了,当我们需要表示日期和时间的话都会想到
date
类型。它可以存储月,年,日,世纪,时,分和秒。它典型地用来表示什么时候事情已经发生或将要发生。
DATE
数据类型的问题在于它表示两个事件发生时间间隔的度量粒度是秒。这个问题将在稍后讨论
timestamp
的时候被解决。可以使用TO_CHAR函数把
DATE
数据进行传统地包装,达到表示成多种格式的目的。
SQL
> SELECT TO_CHAR(
date
1,'MM/DD/YYYY HH24:MI:SS') "
Date
" FR
本安装包改自 http://download.csdn.net/download/mysky2008/4382509(安装后请重启以使PATH生效)
1、本软件可作为简单的
Oracle
10g客户端使用,包括:tnsping、exp、imp、
sql
ldr、
sql
plus、tkprof(新增)等功能,如对客户端功能有更高的使用要求,请安装官方
Oracle
客户端。
2、本软件安装后,连接
oracle
服务器时需要手动配置tnsnames.ora,用户可参照tnsnames.ora中的注释部分进行配置。
3、可使用自带的
SQL
Plus连接
Oracle
服务器,可以配合PL
SQL
Developer使用。为减小软件体积,没有对PL/
SQL
Developer打包,请用户自行下载。
------------------------------------
>移除了OLE DB/ODBC相关的几个文件, 相应的注册表也一并移除
>加入OCCI相关的DLL文件,以支持occi程序的运行
>加入了 OCI 目录,该目录下的文件用于编译OCI程序
>在注册表中加入NLS_
DATE
_FORMAT、NLS_
TIMESTAMP
_FORMAT等环境变量
>修改了注册表中
Oracle
_Home写死路径的BUG
>完善一些错误消息提示
Coping with Legacy LONG Types 515
DATE
,
TIMESTAMP
, and INTERVAL Types 520
Formats 521
DATE
Type 522
TIMESTAMP
Type 529
INTERVAL Type 537
LOB Types 540
Internal LOBs 541
BFILEs 553
ROWID/UROWID Types 555
Summary 556
■CHAPTER 13 Partitioning 557
Partitioning Overview 558
Increased Availability 558
Reduced Administrative Burden 560
Enhanced Statement Performance 565
Table Partitioning Schemes 567
Range Partitioning 567
Hash Partitioning 570
List Partitioning 575
Composite Partitioning 577
Row Movement 579
Table Partitioning Schemes Wrap-Up 581
■CONTENTS ix
Partitioning Indexes 582
Local Indexes vs Global Indexes 583
Local Indexes 584
Global Indexes 590
Partitioning and Performance, Revisited 606
Auditing and Segment Space Compression 612
Summary 614
■CHAPTER 14 Parallel Execution 615
When to Use Parallel Execution 616
A Parallel Processing Analogy 617
Parallel Query 618
Parallel DML 624
Parallel DDL 627
Parallel DDL and Data Loading Using External Tables 628
Parallel DDL and Extent Trimming 630
Parallel Recovery 639
Procedural Parallelism 639
Parallel Pipelined Functions 640
Do-It-Yourself Parallelism 643
Summary 648
■CHAPTER 15 Data Loading and Unloading 649
SQL
*Loader 649
Loading Data with
SQL
LDR FAQs 653
SQL
LDR Caveats 679
SQL
LDR Summary 680
External Tables 680
Setting Up External Tables 681
Dealing with Errors 687
Using an External Table to Load Different Files 690
Multiuser Issues 691
External Tables Summary 692
Flat File Unload 692
Data Pump Unload 701
Summary 703
■INDEX 705
Oracle
数据库设计策略及规范 设计策略及规范 1. 目的 定义
Oracle
数据库设计规范,作为数据库规划、设计、开发以及维护人员的技术参考资料。用以规范和指导相关人员的设计行为。 2. 概述 本文档根据
Oracle
数据库性能特点,描述对表、视图、存储过程、对象命名等方面的设计规范。 3. 基本策略 3.1 设计策略 分类拆分数据量大的表。 对于经常使用的表(如某些参数表或代码对照表),由于其使用频率很高,要尽量减少表中的记录数量。例如,银行的户主账表原来设计成一张表,虽然可以方便程序的设计与维护,但经过分析发现,由于数据量太大,会影响数据的迅速定位。如果将户主账表分别设计为活期户主账、定期户主账及对公户主账等,则可以大大提高查询效率。 分区策略 在拥有数500行以上的表时,采用分区策略。 索引设计。 对于大的数据库表,合理的索引能够提高整个数据库的操作效率。在索引设计中,索引字段应挑选重复值较少的字段;在对建有复合索引的字段进行检索时,应注意按照复合索引字段建立的顺序进行。例如,如果对一个5万多条记录的流水表以日期和流水号为序建立复合索引,由于在该表中日期的重复值接近整个表的记录数,用流水号进行查询所用的时间接近3秒;而如果以流水号为索引字段建立索引进行相同的查询,所用时间不到1秒。因此在大型数据库设计中,只有进行合理的索引字段选择,才能有效提高整个数据库的操作效率。 有时候为了提高性能。减少表的关联,恰当的数据冗余是允许的。 索引对新增,删除,更新的性能影响比较大,对相关的表的索引使用要权衡 为表和索引建立不同的表空间,禁止在系统表空间中放入非核心
oracle
系统成分的对象, 确保数据表空间和索引表空间位于不同的磁盘磁盘驱动器上。 对于经常发生同时查询或频繁查询的表,最好把他放到不同的磁盘空间上 4. 逻辑设计规范 4.1 范式 如果没有性能上的原因,应该使用关系数据库理论,达到较高的范式,避免数据冗余。 如果在数据量上与性能上无特别要求,考虑到实现的方便性可以有适当的数据冗余,但基本上要达到3NF。 4.2 表设计 对于数据量比较大的表,根据表数据的属性进行分区,以得到较好的性能。如果表按某些字段进行增长,则采用按字段值范围进行范围分区;如果表按某个字段的几个关键值进行分布,则采用列表分区;对于静态表,则采用Hash分区或列表分区;在范围分区中,如果数据按某关键字段均衡分布,则采用子分区的复合分区方法。 每个表均创建类型为Sequence的主键字段。 每个表中需含有如下几个基本字段:一个表的SEQ号,4个创建信息字段,5-8个备用字段,一个删除标记字段,最好还有一个行版本字段 字段名 类型 备注 业务SEQ号 整数型 作为表主键 OBLIGATE1 字符型 备用字段 OBLIGATE2 OBLIGATE3 OBLIGATE4 OBLIGATE5 CREATE_USER_ID VARCHAR 创建用户ID CREATE_
DATE
TIME
DATE
创建时间 LAST_UP
DATE
_USER_ID VARCHAR 更新用户ID LAST_UP
DATE
_
DATE
TIME
TIMESTAMP
更新时间 不要用Identify字段作为表的主键与其它表关联。 4.3 索引设计 常规OLTP应用,创建B-TREE索引,不创建位图索引。 不需要为小型数据表(<5000)创建索引。 给单个表创建的索引不超过5个,特别是海量交易类表。 索引条件查询结果记录,不超总记录的20%。 不要给固定选项的字段创建独立索引。 如只有'男,女'的性别字段;'是,否'的状态字段等,不要创建独立索引,位可以建立复合索引。 对于复合索引,索引字段顺序比较关键,把查询频率比较高的字段排在索引组合的最前面。 索引放到独立的表空间,该表空间不需要REDO LOG。 含有外键约束的表的字段,必须有单独索引。如订单明细的表头外键。 5. 对象命名规范 5.1 一般规范 5.1.1 语言 命名使用英文单词,不使用复数。
Oracle
数据库设计策略及规范全文共3页,当前为第1页。 英文单词使用同对象本身意义相对或相近的单词。选择最简单或最通用的单词。不能使用毫不相干的单词来命名。
Oracle
数据库设计策略及规范全文共3页,当前为第1页。 当一个单词不能表达对象含义时,用词组组合,如果组合太长时,采用简写或缩写,缩写要基本能表达原单词的意义。 当出现对象名重名时,是不同类型对象时,加类型前缀或后缀以示区别。 禁止使用中文或拼音缩写进行命名 5.1.2 大小写 名称一律大写,以方便不同数据库移植,以及避免程序调用问题 5.1.3 单词分隔 命名的各单词之间使用下划线进行分隔。 命名的各单词之间不允许有空格存在 5.1.4 保留字 命名不允许使用
SQL
保留字。 5.1.5
开发框架是jFinal。通过baseModel的find方法获取到
oracle
数据库中的数据记录。但是其中有字段是
timestamp
类型。现将object强转,然后再转为
Date
.
String
sql
= "SELECT * FROM T_USER WHERE USER_ID='"+UserID+"'";
Record result = Db.findFirst(
sql
);
oracle
.
sql
....
oracle
数据库中,
timestamp
类型可以保存秒之后的精度,有时候我们在
java
代码中需要用到这个精度。在
Java
中从resultset中rs.getObject(colName)取得的字段类型为
oracle
.
sql
.
Timestamp
,而我们的pojo中需要的是
java
.
sql
.
timestamp
,这就需要
转换
一下,比如:
oracle
sql
.
TIMESTAMP
colVal = (
oracle
.
sql
.
TIMESTAMP
)rs.getObject(colName);
Timestam...
可以使用Simple
Date
Format类来设置日期格式,然后使用它们之间的parse()和format()方法进行
转换
。例如,可以使用以下代码将
java
.
sql
.
Date
转换
为
java
.util.
Date
:
java
.
sql
.
Date
sql
Date
= new
java
.
sql
.
Date
(System.currentTimeMillis());
java
.util.
Date
util
Date
= new
java
.util.
Date
(
sql
Date
.getTime());
同样,可以使用以下代码将
java
.util.
Date
转换
为
java
.
sql
.
Date
:
java
.util.
Date
util
Date
= new
java
.util.
Date
();
java
.
sql
.
Date
sql
Date
= new
java
.
sql
.
Date
(util
Date
.getTime());
最后,可以使用以下代码将
java
.util.
Date
转换
为
java
.
sql
.
Timestamp
:
java
.util.
Date
util
Date
= new
java
.util.
Date
();
java
.
sql
.
Timestamp
timestamp
= new
java
.
sql
.
Timestamp
(util
Date
.getTime());