Get Timestamp in specific format

I have a timestamp saved in Azure SQL Database in the format of 2004-09-23 10:52:00. When I fetch the value, I am using sqlrowset where I am using getString("last_updated_user") and getting output like this “2004-09-23 10:52:00.0”. When I tried using getTimeStamp("last_updated_user"), I am getting in microseconds. Can someone help me on formatting it to “2004-09-23 10:52:00” based on some in-built functions like .format or something and not by just removing the decimal by replace or substring?

Answer

Solution using java.time, the modern Date-Time API:

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        String d = "2004-09-23 10:52:00.0";
        DateTimeFormatter dtfInput = DateTimeFormatter.ofPattern("u-M-d H:m:s.S", Locale.ENGLISH);
        LocalDateTime ldt = LocalDateTime.parse(d, dtfInput);

        DateTimeFormatter dtfOutput = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss", Locale.ENGLISH);
        String str = ldt.format(dtfOutput);
        System.out.println(str);
    }
}

Output:

2004-09-23 10:52:00

Online demo

Learn more about the modern Date-Time API* from Trail: Date Time.


* For any reason, if you have to stick to Java 6 or Java 7, you can use ThreeTen-Backport which backports most of the java.time functionality to Java 6 & 7. If you are working for an Android project and your Android API level is still not compliant with Java-8, check Java 8+ APIs available through desugaring and How to use ThreeTenABP in Android Project.