sql >> Database teknologi >  >> RDS >> Mysql

SimpleDateFormatter.parse giver output i et andet format end specificeret

Send ikke datoer som strenge til din MySQL-database. Det er bedre, både nemmere og sikrere at sende dateobjekter. For det første fritager det dig for formatering og eventuelle formateringsproblemer. Bedst videregive forekomster af en klasse fra java.time , den moderne Java dato og klokkeslæt API. I dit tilfælde en LocalDateTime vil gøre.

    String ep ="a1527069600";
    long epoch = Long.parseLong(ep.substring(1));
    Instant inst = Instant.ofEpochSecond(epoch);
    LocalDateTime ldt = inst.atZone(ZoneId.of("Asia/Calcutta")).toLocalDateTime();

    System.out.println(ldt);

    PreparedStatement ps = myDatabaseConnection.prepareStatement(
            "insert into my_table (my_date_time) values (?)");
    ps.setObject(1, ldt);

LocalDateTime opnået er:

Jeg forenklede din konvertering fra epokestreng en smule. Brug en primitiv, lille long i stedet for en Long objekt. Jeg bruger din tidszone, Asien/Calcutta, forudsat at dine databaseværdier er i denne tidszone. Normale anbefalinger er at holde databaseværdier i UTC, i det mindste hvis der er nogen mulighed for, at dataene nogensinde vil blive brugt uden for din tidszone. Hvis du ønsker dette, skal du bruge denne konvertering i stedet for den ovenfor:

    LocalDateTime ldt = inst.atOffset(ZoneOffset.UTC).toLocalDateTime();

Link: Oracle-selvstudie:Dato Tid forklarer, hvordan du bruger java.time .




  1. Returner 0, hvis feltet er null i MySQL

  2. Sådan bruger du Oracle PL/SQL til at skabe ti lignende tabeller fra en given Oracle-kildetabel

  3. Parameteriseret forespørgsel, der returnerer TEXT-kolonne(r), returnerer altid nul for INT-kolonner

  4. HAS_DBACCESS() – Find ud af, om en bruger kan få adgang til en database i SQL Server