package mariadb;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.UUID;

public class TimeTest {

    public static void main( String[] args ) throws Exception {
        String dbUrl = "jdbc:mariadb://localhost:3306/time_test";
        String dbUsername = "root";
        String dbPassword = "v@gRan2#";

        SimpleDateFormat df = new SimpleDateFormat( "HH:mm:ss" );
        Class.forName( "org.mariadb.jdbc.Driver" );

        try ( Connection conn = DriverManager.getConnection( dbUrl, dbUsername, dbPassword ) ) {
            // 5AM
            Calendar cal = Calendar.getInstance();
            cal.clear();
            cal.set( Calendar.HOUR, 5 );
            cal.set( Calendar.MINUTE, 0 );
            cal.set( Calendar.AM_PM, Calendar.AM );

            String uuid = UUID.randomUUID().toString();
            java.sql.Time timeValue = new java.sql.Time( cal.getTimeInMillis() );

            System.out.println( "Data to be inserted: " + df.format( timeValue ) );

            try ( PreparedStatement stmt = conn.prepareStatement( "insert into t_time_test (uuid, time_field) values (?, ?)" ) ) {
                stmt.setString( 1, uuid );
                stmt.setTime( 2, timeValue );
                stmt.executeUpdate();
            }

            try ( PreparedStatement stmt = conn.prepareStatement( "select * from t_time_test where uuid = ?" ) ) {
                stmt.setString( 1, uuid );

                try ( ResultSet rs = stmt.executeQuery() ) {
                    rs.next();
                    java.sql.Time timeValueResult = rs.getTime( "time_field" );

                    System.out.println( "Query result: " + df.format( timeValueResult ) );
                }
            }
        }
    }
}
