Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak przekonwertować ciąg znaków na format daty do przechowywania w bazie danych?

Oto przykład, który działa z Twoimi przypadkami testowymi:

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);
    }  
}  

Z przypadkiem testowym 20200913204839 zwraca:

Sun Sep 13 20:48:39 UTC 2020

Oto, co oznaczają znaki w SimpleDateFormat:

yyyy oznacza rok (przykład:2020)

MM oznacza miesiąc (przykład:lipiec, sierpień)

dd oznacza dzień w miesiącu (przykład:15)

HH oznacza godzinę dziennie (przykład:20)

mm i ss oznaczają odpowiednio minuty i sekundy (przykład:52:34)

Nie musi to być data — wystarczy ciąg znaków.

I tak - używanie SimpleDateFormat działa dobrze.

EDYCJA:Specyficzne formatowanie

Sformatowałem go specjalnie dla Twojego przypadku:

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);
    }  
} 

Najpierw analizujemy String na datę, z której możemy sformatować.

Przypadek testowy 20200913204839 zwraca:

13-Sun-2020 08:48:39


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. klauzula unii w sql

  2. Uzyskanie sumy kilku kolumn z dwóch tabel

  3. java.lang.ClassCastException:com.mchange.v2.c3p0.impl.NewProxyConnection

  4. ORA-24550:odebrany sygnał:[si_signo=6] błąd

  5. Udowodnienie równoważności zapytań SQL