Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como converter uma sequência de caracteres em um formato de data para armazenar no banco de dados?


Aqui está um exemplo que funciona com seus casos de teste:
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);
    }  
}  

Com caso de teste 20200913204839 ele retorna:
Sun Sep 13 20:48:39 UTC 2020

Aqui está o que os caracteres no SimpleDateFormat significam:

yyyy significa um ano (Exemplo:2020)

MM significa um mês (Exemplo:julho, agosto)

dd significa um dia em um mês (Exemplo:15)

HH significa uma hora em um dia (Exemplo:20)

mm e ss significam minutos e segundos respectivamente (Exemplo:52:34)

Não precisa ser uma Data - apenas uma String funciona bem.

E sim - usar SimpleDateFormat funciona muito bem.

EDIT:formatação específica

Eu formatei especificamente para o seu 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);
    }  
} 

Primeiro analisamos a String em uma data, a partir da qual podemos formatar.

Um caso de teste 20200913204839 retorna:
13-Sun-2020 08:48:39