Oracle
 sql >> Database >  >> RDS >> Oracle

Come convertire una sequenza di caratteri in un formato data da archiviare nel database?

Ecco un esempio che funziona con i tuoi casi di test:

import java.text.SimpleDateFormat;  
import java.util.Date;  
public class StringToDateExample1 {  
    public static void main(String[] args)throws Exception {  
        String sDate1="20200913204839";  
        Date date1=new SimpleDateFormat("yyyyMMddhhmmss").parse(sDate1);  
        System.out.println(date1);
    }  
}  

Con test case 20200913204839 restituisce:

Sun Sep 13 20:48:39 UTC 2020

Ecco cosa significano i caratteri in SimpleDateFormat:

yyyy indica un anno (Esempio:2020)

MM indica un mese (Esempio:luglio, agosto)

dd indica un giorno in un mese (Esempio:15)

HH indica un'ora in un giorno (Esempio:20)

mm e ss indicano rispettivamente minuti e secondi (Esempio:52:34)

Non deve essere una data, solo una stringa funziona bene.

E sì, l'utilizzo di SimpleDateFormat funziona perfettamente.

EDIT:formattazione specifica

L'ho formattato appositamente per il tuo caso:

import java.text.SimpleDateFormat;  
import java.util.Date;  
public class StringToDateExample1 {  
    public static void main(String[] args)throws Exception {  
        String sDate1="20200913204839";  
        Date date1=new SimpleDateFormat("yyyyMMddhhmmss").parse(sDate1);
        String formatted = new SimpleDateFormat("dd-EE-yyyy hh:mm:ss").format(date1);
        System.out.println(formatted);
    }  
} 

Per prima cosa analizziamo la stringa in una data, dalla quale possiamo formattare.

Un test case 20200913204839 resi:

13-Sun-2020 08:48:39