精华内容
下载资源
问答
  • TIMESTAMP的几种类型比较 TIMESTAMP 时间戳类型,与date的区别在于,date不能精确到毫秒,而timestamp可以精确到毫秒,毫秒的位数为0-9位,默认为6位。 SQL> select tp from timestamp_test; TP -----------------...
  • oracle中TIMESTAMP与DATE比较
  • 在使用Oracle数据库时,把Timestamp类型的字段查出来显示到界面上居然是一串数字,不符合我们常见的要求,我就查了一下,...就想到了用Oracle中Timestamp类型接受,然后转化,下来看具体实现方法: package com....

    在使用Oracle数据库时,把Timestamp类型的字段查出来显示到界面上居然是一串数字,不符合我们常见的要求,我就查了一下,发现中间还有很多道道,Oracle查出来的Timestamp类型和java里边的Timestamp类型不是同一种类型,在java后台转化不了,所以只能另辟蹊径。
    就想到了用Oracle中的Timestamp类型接收,然后转化,下来看具体实现方法:

    package com.sql.csv.db2csv.service;
    
    
    import com.sql.csv.common.Const;
    import com.sql.csv.mapper.oracle.IOracleDao;
    import com.sql.csv.util.CsvWriter;
    import lombok.extern.slf4j.Slf4j;
    import oracle.sql.TIMESTAMP;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    import sun.misc.BASE64Decoder;
    import sun.misc.BASE64Encoder;
    
    import java.io.File;
    import java.io.IOException;
    import java.lang.reflect.Method;
    import java.nio.charset.Charset;
    import java.sql.Timestamp;
    import java.text.SimpleDateFormat;
    import java.util.*;
    
    @Service
    @Slf4j
    public class Db2csvService {
    
        private void 省略...() {
           String time = getStringValue(map.get("time"));
        }
    
        private String getStringValue(Object obj) {
            if(null == obj){
                return "";
            }else if(obj instanceof  byte[]){
                return new BASE64Encoder().encode((byte[])obj);
                //new BASE64Decoder().decodeBuffer(String base64)
            }else if(obj instanceof oracle.sql.TIMESTAMP){
                Timestamp timestamp = getOracleTimestamp(obj);
                String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S").format(timestamp);
                return time;
            }
            return obj.toString();
        }
    //运用反射调用Oracle中Timestamp的方法,进行处理
        private Timestamp getOracleTimestamp(Object value){
            try{
                Class clz = value.getClass();
                Method method = clz.getMethod("timestampValue",null);
                //System.out.println("11----->" + clz.getMethod("timestampValue",null).invoke(value,null));
                //System.out.println(clz.getMethod("timeValue",null).invoke(value,null));
                //System.out.println(clz.getMethod("dateValue",null).invoke(value,null));
                return (Timestamp)method.invoke(value,null);
            }catch(Exception ex){
                ex.printStackTrace();
                return null;
            }
        }
    
    }
    
    展开全文
  • TIMESTAMP的几种类型比较 TIMESTAMP 时间戳类型,与date的区别在于,date不能精确到毫秒,而timestamp可以精确到毫秒,毫秒的位数为0-9位,默认为6位。 SQL> select tp from timestamp_test; --------------...

    TIMESTAMP的几种类型比较

    TIMESTAMP

    时间戳类型,与date的区别在于,date不能精确到毫秒,而timestamp可以精确到毫秒,毫秒的位数为0-9位,默认为6位。

    SQL> select tp from timestamp_test;
    
    --------------------------------------------------------------------------------
    01-3月 -16 09.22.33.000000 上午

    如:TIMESTAMP类型:

    DATE类型:

     

    TIMESTAMP WITH TIME ZONE

    TIMESTAMP WITH TIME ZONE 与 TIMESTAMP的区别在于,前者输出显示携带存入该时间值的数据库时区,后者输出不携带时区。

    SQL> select tp_tz from timestamp_test;
    --------------------------------------------------------------------------------
    01-3月 -16 09.22.33.000000 上午 +08:00

     

    TIMESTAMP WITH LOCAL TIME ZONE

    TIMESTAMP WITH LOCAL TIME ZONE与TIMESTAMP的区别在于,前者的输出受时区影响,会跟着时区的变化而变化,而后者存入数据库后将不受时区影响。即前者以数据库本地时区保存数据,输出时将转换成客户端时区输出。

     

    实战演练

    # 创建timestamp_test测试表
    SQL> create table timestamp_test(dt date,tp timestamp(6),tp_tz timestamp(6) with time zone,tp_l_tz timestamp(6) with local time zone);
    Table created
    # 在测试表中添加数据
    SQL> insert into timestamp_test values(sysdate,sysdate,sysdate,sysdate);
    1 row inserted
    SQL> commit;
    Commit complete
    # 查看数据库的时区和当前会话的时区
    SQL> select dbtimezone,sessiontimezone from dual;
    DBTIMEZONE SESSIONTIMEZONE
    ---------- ---------------------------------------------------------------------------
    +00:00   +08:00
    # 查看当前时间
    SQL> select sysdate from dual;
    SYSDATE
    -----------
    2016/3/1 9:
    # 查看测试表的数据
    SQL> select * from timestamp_test;
    DT     TP                                        TP_TZ                                      TP_L_TZ
    ----------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- --------------------------------------------------------------------------------
    2016/3/1 9: 01-3月 -16 09.22.33.000000 上午                         01-3月 -16 09.22.33.000000 上午 +08:00                      01-3月 -16 09.22.33.000000 上午
    # 修改当前会话的时区
    SQL> alter session set time_zone='+10:00';
    Session altered
    # 查看当前会话时区修改后的测试表的数据
    SQL> select dbtimezone,sessiontimezone from dual;
    DBTIMEZONE SESSIONTIMEZONE
    ---------- ---------------------------------------------------------------------------
    +00:00   +10:00
    SQL> select * from timestamp_test;
    DT     TP                                        TP_TZ                                      TP_L_TZ
    ----------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- --------------------------------------------------------------------------------
    2016/3/1 9: 01-3月 -16 09.22.33.000000 上午                         01-3月 -16 09.22.33.000000 上午 +08:00                      01-3月 -16 11.22.33.000000 上午

     

    参考:

    https://www.jb51.net/article/99968.htm

    展开全文
  • Oracle中timeStamp数据显示格式设定

    万次阅读 2018-03-01 17:00:45
    Windows系统可以通过配置环境变量完成(nls_date_format,nls_timestamp_format,nls_timestamp_tz_format),我们只需要在系统属性-高级-环境变量-系统变量nls_date_format参数用于设置日期显示格式,设置的方式有...

    Windows系统

    可以通过配置环境变量完成(nls_date_format,nls_timestamp_format,nls_timestamp_tz_format),我们只需要在系统属性-高级-环境变量-系统变量



    nls_date_format参数用于设置日期显示格式,设置的方式有多种,不同的方式也会带来不同的结果。参数的设置是有优先级的,日期格式的参数设置也不例外。优先级如下(低到高):初始化参数 < 系统环境变量 < 会话级(session)< 函数

    在进入数据库中,使用show parameter nls显示如下。

    SQL> show parameter nls
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    nls_calendar                         string
    nls_comp                             string
    nls_currency                         string
    nls_date_format                      string
    nls_date_language                    string
    nls_dual_currency                    string
    nls_iso_currency                     string
    nls_language                         string      SIMPLIFIED CHINESE
    nls_length_semantics                 string      BYTE
    nls_nchar_conv_excp                  string      FALSE
    nls_numeric_characters               string
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    nls_sort                             string
    nls_territory                        string      CHINA
    nls_time_format                      string
    nls_time_tz_format                   string
    nls_timestamp_format                 string
    nls_timestamp_tz_format              string


    1.用初始化参数来设置nls_date_format

    检查是否设置了nls_date_format环境变量,从下面的结果可知并没有设置
    [oracle@oracle11g ~]$ export nls_date_format
    SQL>show parameter nls_date_format
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    nls_date_format                      string
    

    修改参数nls_date_format

    SQL> alter system set nls_date_format='yyyy-mm-dd hh24:mi:ss' scope=spfile;
    
    System altered.
    
    SQL> shutdow immediate
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL> startup
    ORACLE instance started.
    
    Total System Global Area  327155712 bytes
    Fixed Size                  1273516 bytes
    Variable Size             138412372 bytes
    Database Buffers          184549376 bytes
    Redo Buffers                2920448 bytes
    Database mounted.
    Database opened.
    SQL> show parameter nls_date_format
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    nls_date_format                      string      yyyy-mm-dd hh24:mi:ss
    
    SQL> select sysdate from dual;
    
    SYSDATE
    ------------
    04-FEB-15
    

    在修改参数nls_date_format后,我们查询系统时间并没有以'yyyy-mm-dd hh24:mi:ss'这种格式显式,因为NLS_LANG环境变量同样会影响到nls_date_format参数,只要存在NLS_LANG环境变量,Oracle就会使用环境变量的值(即使nls_date_format),根据上面我们提到的优先级,所以初始化参数文件设置的值会被忽略,但由于环境变量中nls_date_format并没有设置,所以Oracle还是使用了默认的格式。

    现在设置NLS_LANG环境变量

    [oracle@oracle11g ~]$ export NLS_LANG
    [oracle@oracle11g ~]$ sqlplus / as sysdba
    SQL*Plus: Release 10.2.0.5.0 - Production on Wed Feb 4 10:00:05 2015
    
    Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.
    
    
    Connected to:
    Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    
    SQL> show parameter nls_date_format
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    nls_date_format                      string      yyyy-mm-dd hh24:mi:ss
    SQL> select sysdate from dual;
    
    SYSDATE
    -------------------
    2015-02-04 10:01:26
    

    从上面的结果可以看到当我们去掉环境变量nls_lang后,查询系统时间就是以初始化参数nls_date_format的格式(yyyy-mm-dd hh24:mi:ss)来显示的

    2.我们将参数nls_date_format设置为'yyyy-mm-dd hh24:mi:ss',将环境变量设置为'yy-mm-dd hh24:mi:ss'来观察它们的优先级

    [oracle@oracle11g ~]$ export nls_date_format='yy-mm-dd hh24:mi:ss'
    [oracle@oracle11g ~]$ sqlplus / as sysdba
    
    SQL*Plus: Release 10.2.0.5.0 - Production on Wed Feb 4 09:44:07 2015
    
    Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.
    
    
    Connected to:
    Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    
    SQL> show parameter nls_date_format
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    nls_date_format                      string      yyyy-mm-dd hh24:mi:ss
    SQL> select sysdate from dual;
    
    SYSDATE
    -----------------
    15-02-04 09:44:31
    

    可以看到查询系统时间以是环境变量所设置的格式('yy-mm-dd hh24:mi:ss')来显示的。这就说明nls_date_format在环境变量中的设置比初始化参数的优先级高。

    3.我们将参数nls_date_format设置为'yyyy-mm-dd hh24:mi:ss',环境变量设置为'yy-mm-dd hh24:mi:ss',并在会话级将nls_date_format设置为'dd-mm-yy hh24:mi:ss'

    [oracle@oracle11g ~]$ export nls_date_format='yy-mm-dd hh24:mi:ss'
    [oracle@oracle11g ~]$ sqlplus / as sysdba
    
    SQL*Plus: Release 10.2.0.5.0 - Production on Wed Feb 4 09:44:07 2015
    
    Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.
    
    
    SQL> alter session set nls_date_format='dd-mm-yy hh24:mi:ss';
    
    Session altered.
    
    SQL> show parameter nls_date_format
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    nls_date_format                      string      yyyy-mm-dd hh24:mi:ss
    SQL> select sysdate from dual;
    
    SYSDATE
    -----------------
    04-02-15 09:50:01
    

    从上面的结果可以看到查询系统时间是以会话级参数nls_date_format的格式(='dd-mm-yy hh24:mi:ss')来显示的,这就说明了nls_date_format参数的优先级为:会话级>环境变量>初始化参数

    4.我们将参数nls_date_format设置为'yyyy-mm-dd hh24:mi:ss',环境变量设置为'yy-mm-dd hh24:mi:ss',并在会话级将nls_date_format设置为'dd-mm-yy hh24:mi:ss',使用函数来转换日期格式为'mm-dd-yy hh24:mi:ss'

    [oracle@oracle11g ~]$ export nls_date_format='yy-mm-dd hh24:mi:ss'
    [oracle@oracle11g ~]$ sqlplus / as sysdba
    
    SQL*Plus: Release 10.2.0.5.0 - Production on Wed Feb 4 09:44:07 2015
    
    Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.
    
    
    SQL> alter session set nls_date_format='dd-mm-yy hh24:mi:ss';
    
    Session altered.
    
    SQL> show parameter nls_date_format
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    nls_date_format                      string      yyyy-mm-dd hh24:mi:ss
    
    SQL> select to_char(sysdate,'mm-dd-yy hh24:mi:ss') from dual;
    
    TO_CHAR(SYSDATE,'
    -----------------
    02-04-15 10:11:44
    

    从上面的结果可以看到函数的优先级最高,这就证明了日期格式的优先级为:初始化参数 < 系统环境变量 < 会话级(session)< 函数

    展开全文
  • Oracle中TIMESTAMP数据类型

    千次阅读 2018-01-04 14:29:04
    TIMESTAMP数据类型 是DATE的扩展,可以存储年、月、日、小时、分钟、秒,同时还可以存储秒的小数部分。通过to_timestamp函数将date型转成这种类型。 sql语句如下: SELECT TO_TIMESTAMP('2018-1-04','yyyy-mm-dd'...

    TIMESTAMP数据类型

    是DATE的扩展,可以存储年、月、日、小时、分钟、秒,同时还可以存储秒的小数部分。通过to_timestamp函数将date型转成这种类型。

    sql语句如下:

    SELECT TO_TIMESTAMP('2018-1-04','yyyy-mm-dd')  
    FROM dual; 

    运行结果如下:

          04-1月 -18 12.00.00.000000000 上午


    TIMESTAMP以日期格式输出表示 

    select TO_CHAR(to_timestamp('2018-1-04','yyyy-mm-dd hh24:mi:ss') ,'YYYY-MM-DD HH24:MI:SS')  
    from dual; 

    运行结果如下:

         2018-01-04 00:00:00



    TIMESTAMPDATE格式的两个时间的差以秒为单位


    select (to_date(TO_CHAR(create_time , 'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') 
          - to_date(TO_CHAR(ALARM_start , 'yyyy-mm-dd hh24:mi:ss'),'YYYY-MM-DD HH24:mi:ss'))* 86400 as "time"  
    from alarm;

    运行结果如下:

         27.99999999999999999999999999999999999999


    DATE格式的两个时间的差以秒为单位

    select (to_date('2018-1-04', 'yyyy-mm-dd hh24:mi:ss') - to_date('2018-1-03', 'YYYY-MM-DD HH24:mi:ss')) * 86400 as "time"  
    from dual;

    运行结果如下:

           86400

         




    展开全文
  • 1、oracle数据库,如果某些表的字段类型是timestamp类型,数据结果如下日期格式 2、快速修改为正常使用的日期格式,处理方法:查询时把timestamp类型+0,再查询即可 即:select xxxx+0 from dual
  • Oracle中timestamp时间戳的长度

    千次阅读 2017-05-28 12:40:37
    Timestamp nowTime = new Timestamp(System.currentTimeMillis()); SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss.SSS”); String time = sdf.format(nowTime); nowTime = Tim
  • oracle中timestamp和Date类型的转换

    千次阅读 2017-04-26 19:19:50
    1、timestamp –>Datecast(systimestamp as date)也可以将timestamp转换成Date。select cast(systimestamp as Date) from Dual;systimestamp --26-4月 -17 07.14.45.466000 下午 +08:00 rusult --2017/4/26 19:14
  • 在项目开发,要求保存毫秒精度的时间,C#DateTime类型虽然有Millsecond属性,但是插入Timestamp类型的Oracle数据列时,无法保存毫秒数据。 以下是我的开发环境: ...
  • oracle中timestamp转成date类型 由于要利用数据量比较大,利用spark在集群进行表关联并创建,并且需要进行时间的加减,所以创建出的表类型是TIMESTAMP类型(2017-10-03 09:40:06:000000) 无意间看到一种方法,...
  • oracle中timestamp格式简介

    万次阅读 2019-07-11 01:44:21
    最近部门外包了子公司的一套系统,一开始没有考虑到跨时区使用的问题,因此没有对系统做国际化,...在某一次跟项目经理聊天的过程,运维大哥凑过来说其实 Oracle 有个数据类型在读取的时候可以将时间转换成客户...
  • java插入oracle中Timestamp类型 参考文档: java实现Date和Timestamp的相互转换 https://blog.csdn.net/weixin_43161811/article/details/88672414 java向ORACLE插入时间 ...
  • mysql和oracle中TimeStamp的时区问题

    千次阅读 2019-07-05 11:47:25
    针对mysql和oracle中TimeStamp的时区问题,实验总结如下: mysql: mysql的TimeStamp默认是不进行时区转化的,存储的是时间和服务端时区,读取到的是时间和客户端时区,时间是一致的。要开启时区转化,需要设置jdbc...
  • Oracle中插入timestamp类型的值

    万次阅读 2019-06-03 23:49:31
    oracle数据库,时间一般会设置为Date 、timestamp 或者是varchar2类型,对于varchar2和date类型,一般都很好处理, varchar2类型,就直接通过字符串进行赋值即可,date类型可以使用 sysdate 插入当前时间,或者...
  • 获得当前时间: select sysdate from dual; select systimestamp from dual;...特别是表日期字段类型为timestamp时 获取时间差时特别有用 如:t.birth 为timestamp类型 获取出生到当前有多少...
  • 实体类的时间类型是Stirng,数据库的是TIMESTAMP(6)。入库操作时用了to_date。 现在有个问题就是查询操作时,数据库对应的值转给实体类时,有点问题。 数据库的值: ![图片说明]...
  • ORACLE中date和timestamp的相互转化

    万次阅读 2018-06-19 14:26:14
    date转为timstam可以函数to_timestamp的方式来转化: SELECT to_timestamp('2018-06-19 12:10:10.1','yyyy-mm-dd hh24:mi:ss.ff') FROM dual; timestamp转化为date 1, timestamp+0 select Systimestamp+...
  • oracle中timestamp问题

    2010-03-04 16:14:00
    问题描述: 当数据库的字符集为中文时,timestamp类型的字段为以下格式: 04-3月 -10 03.57.41.631000 下午 我在用JDOM将数据导出为XML时,timestamp类型字段的值反生了变化,变成了一下格式 2010-3-4.15.57....
  • oracle建表timestamp设定默认值

    千次阅读 2020-06-09 20:31:42
    start_time TIMESTAMP DEFUALT TO_TIMESTAMP('20190101 00:00:00.000000','yyyyMMdd HH24:mi:ss.ff6') NOT NULL; ) 注: 这里的格式,仅对应给定默认值数据格式。不影响最终插入数据后实际展示结果。
  • VARCHAR2类型转换TIMESTAMP类型 举例: TO_TIMESTAMP('2021-09-17 16:58:38.905','yyyy-mm-dd hh24:mi:ss.ff') 好了,今天就到这儿吧,小伙伴们点赞、收藏、评论,一键三连走起呀,我是老贺,我们下期见~~
  • oracle中timestamp的格式化

    千次阅读 2010-04-07 15:43:31
    [code="java"] systimestamp---系统默认timestamp值 FF3---秒之后的精确位数 SELECT to_char(systimestamp,'YYYY-MM-DD HH24:MI:SS.FF3') FROM DUAL; [/code]
  • oracle中timestamp类型数据求时间差

    千次阅读 2019-09-11 10:56:26
    需求:oracle中timestamp类型数据求时间差 问题:直接对timestamp类型数据求时间差时,转出来的格式并非易读格式,如图: 考虑将timestamp类型转为其他类型再作差,时间差以分钟为单位,试了几种方法,可行...
  • oracle timestamp详解

    2013-06-03 14:32:32
    oracle timestamp详解 将常用的转换方法及使用注意事项都罗列出来了
  • import java.sql.Timestamp; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS"); Date date = null; ...
  • Oracle中date和timestamp之间的转换

    万次阅读 2017-06-02 15:30:52
    前几天,gf的项目用到了timestamp类型字段,转换了几次,都报错,今天有时间,就把date与timestamp类型的转换做以测试,总结如下: 1、首先说下date和timestamp的不同吧。 大家知道,date类型能够存储月,年,日,...
  • ♣题目部分在Oracle中,如何获取timestamp类型的精度到纳秒级? ♣答案部分秒(s)的单位都有毫秒(ms,millisecond),微秒(μs,micr...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 65,865
精华内容 26,346
关键字:

oracle中的timestamp