2016-07-21 65 views
1

Ist es möglich, ein TIMESTAMP-Feld in die Anzahl der Millisekunden seit der Epoche zu konvertieren?Datum in Millisekunden seit Epoche mit Apache Derby konvertieren

Etwas wie:

select 
    toEpoch(current_timestamp) 
from SYSIBM.SYSDUMMY1; 
+1

Siehe auch: http://stackoverflow.com/q/32581936/193453 und http://stackoverflow.com/q/11017780/193453, die verwandt sind, aber nicht das gleiche. Es wäre schön, alle "Derby Stored Procedure" Fragen und Antworten zusammen zu sammeln ... –

+1

Hallo Bryan, ich stimme zu. Ich habe gerade gesehen, dass die Dokumentationsfunktion heute in die Betaversion geht. Vielleicht sollten wir das benutzen? – Fidel

Antwort

2

Apache Derby nicht über eine native Funktion, aber es ist möglich, eigene erstellen und sie aus der Datenbank aufrufen.

Zuerst die Java-Methode erstellen, die das Datum konvertiert:

package DbExamples.StoredProcedures; 

import java.sql.Timestamp; 

public class DateUtilities { 
    public static long toEpoch(Timestamp inputDate) { 
     if (inputDate == null) { 
      return 0L; 
     } 

     Long result = inputDate.getTime(); 

     return result; 
    } 
} 

Dann injizieren die JAR-Datei in die Datenbank die folgende SQL-Anweisung für die Datenbank durch Ausführen von:

CALL SQLJ.REMOVE_JAR('App.StoredProcedures', 0); 
CALL SQLJ.INSTALL_JAR('C:\dev\DbExamples\dist\DbExamples.jar', 'App.StoredProcedures', 0); 
CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.classpath', 'App.StoredProcedures'); 

Jetzt erstellen die gespeicherte Prozedur in der Datenbank, indem die folgende SQL-Anweisung ausgeführt wird:

Jetzt können Sie Ihre Abfrage:

select 
    toEpoch(current_timestamp) 
from SYSIBM.SYSDUMMY1; 

select 
    toEpoch(cast('2016-07-21 14:50:00' as timestamp)) 
from SYSIBM.SYSDUMMY1;