Quiero convertir fecha a la cantidad en oracle 11g .

La fecha se almacena en (12/03/2013 12:23:00).

Quiero convertir este Número(La fecha correspondiente valor del número).
Como en java podemos convertir la fecha a la larga .

Yo quiero lo mismo hacer aquí .

    Calendar c = Calendar.getInstance();
    c.set(2013, 05, 23, 0, 0, 0);

    Date date = c.getTime();
    System.out.println("Date is  " + date);
    long longDate = date.getTime();
    System.out.println("Date as long :" + longDate);
    Date d = new Date(longDate);
    System.out.println("Converted Date :" + d);*

La Salida es :

**Fecha Dom Jun 23 00:00:00 SGT 2013

Fecha siempre :1371916800981

Convertido Fecha :Dom Jun 23 00:00:00 SGT 2013**

Ahora quiero a almacenar el valor como 1371916800981

  • Un ejemplo de la salida sería de ayuda.
  • Bueno para usted. Hay muchas formas de representar una fecha como un número. Por favor, sea específico.
  • He añadido el código . Como Sabio tengo fecha en la columna y quiere convertir a número de convertir la fecha a Tiempo en java
InformationsquelleAutor muthukumar | 2014-03-16

2 Comentarios

  1. 0

    Supongo que el tipo de datos long que quieres es algo así como el número de segundos o milisegundos desde 1970-01-01.

    Para conseguir esto, sólo se requiere un poco de aritmética:

    select (to_date(s1, 'MM/DD/YYYY HH24:MI:SS') -
            to_date('1970-01-01', 'YYYY-MM-DD')
           ) *24*60*60
    from (select '12/03/2013 12:23:00' as s1 from dual
         ) t

    Tomo nota de que su resultado es el uso de la actual marca de tiempo. Esto podría incluir milisegundos que esta constante formato de fecha no se incluye.

    • Quiero segundos . no en milisegundos .
    • He quitado el *1000.
    • Gordon Linoff.Gracias voy a probar y la respuesta de vuelta.
    • Me sale este error. ¿Cuál es el problema 00907. 00000 – «falta el paréntesis derecho» *Causa: *Acción: Error en la Línea: Columna 1: 55
    • El código de la respuesta fue copiado directamente a partir de un trabajo de SQL Violín (en sqlfiddle.com/#!4/d41d8).
    • He intentado en oracle SQL Developer .Su trabajo en SQL Filddle
    • Gordon Linoff.Gracias funcionó .
    • ¿Sabe usted la misma para SQL Server Gordon Linoff
    • Es la misma lógica, que sólo tienes que utilizar convert() para convertir la cadena en un datetime. A continuación, utilice datediff(second, . . . ) por la diferencia en el tiempo.

  2. 0

    Usted puede lograr esto con una ayuda de tipo de datos RAW:

    SELECT 
      s1,
      to_number(TO_CHAR(s1,'YYYYMMDDHH24MISS')) as s2,
      utl_raw.cast_to_raw(s1) as d1,
      utl_raw.cast_to_raw(s2) as d2,
      round(utl_raw.cast_to_number(utl_raw.cast_to_raw(s1)),20) as s1,
      round(utl_raw.cast_to_number(utl_raw.cast_to_raw(s2)),20) as s2,
      utl_raw.cast_to_number(utl_raw.cast_to_raw(s1)) - utl_raw.cast_to_number(utl_raw.cast_to_raw(s2)) as s1_s2_diff
    FROM 
    ( select 
        sysdate as s1, 
        sysdate-1/24/60/60 as s2 
      from dual );

    De salida:

    S1                  S2      
    ------------------- --------------
    2014.03.16 11:14:16 20140316111416               
    
    D1                                     D2
    -------------------------------------- --------------------------------------
    323031342E30332E31362031313A31343A3136 323031342E30332E31362031313A31343A3135
    
    S1_1                                   S2_1    
    -------------------------------------- --------------------------------------
    -53524955535055524769525243,5249435247 -53524955535055524769525243,5249435248
    
    SDIFF     
    ------------    
    0,0000000001  

Dejar respuesta

Please enter your comment!
Please enter your name here